バイトコードVerifyErrorsのデバッグが難しいことで有名です。JVMはフィードバックをほとんど提供せず、通常は現在のクラスのみ、場合によってはメソッドのみを提供します。
ASMまたはJasminを介してバイトコードを手動でエンジニアリングするときに通常発生するエラーの例:
Stack size too largeUnable to pop operand off an empty stackFalling off the end of the codeExpecting to find object/array on stackIncompatible object argument for function callInconsistent stack height 4 != 2
(明確にするために、私はこれらすべてが何を意味するかを知っています、私はそれらの原因をデバッグするためのツールまたはテクニックに興味があります。)
私の質問:これらのタイプのエラーに関する詳細なフィードバックを提供するツールはありますか?たとえば、次のような情報をいただければ幸いです。
javap-出力のような- 行番号(またはオペコードバイトオフセット)への参照
- 各行のオペランドスタック情報(タイプ/深さ)
- より説明的なエラーメッセージ