我发现字节码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- 类似的输出- 对行号(或操作码字节偏移)的引用
- 每行的操作数堆栈信息(类型/深度)
- 更具描述性的错误消息