用于调试VerifyError的好工具?

aio*_*obe 10 java debugging bytecode verifyerror

我发现字节码VerifyErrors很难调试.JVM提供的反馈很少,通常只是当前类,有时是方法.

我通常通过ASMJasmin手动设计字节码时遇到的一些错误示例:

  • Stack size too large
  • Unable to pop operand off an empty stack
  • Falling off the end of the code
  • Expecting to find object/array on stack
  • Incompatible object argument for function call
  • Inconsistent stack height 4 != 2

(要清楚;我知道所有这些意味着什么,我对调试它们的原因的工具或技术感兴趣.)

我的问题:是否有任何工具可以提供有关这些类型错误的详细反馈?我会欣赏诸如此类的信息

  • javap类似的输出
  • 对行号(或操作码字节偏移)的引用
  • 每行的操作数堆栈信息(类型/深度)
  • 更具描述性的错误消息

小智 3

我认为你可以使用ASM提供的CheckClassAdapter( http://asm.ow2.org/asm40/javadoc/user/org/objectweb/asm/util/CheckClassAdapter.html )。它提供有关验证错误的更详细信息。