我发现字节码
VerifyErrors
臭名昭着地很难调试. JVM提供很少的反馈,通常只是当前的类,有时是方法.
通过ASM或Jasmin手动工程化字节码时,我通常会遇到的一些错误示例:
>堆栈大小太大
>无法从一个空的堆栈弹出操作数
>掉落代码的末尾
>期望在堆栈上找到对象/数组
>函数调用不兼容的对象参数
堆栈高度不一致4!= 2
(要清楚,我知道这些都是什么意思,我对调试其原因的工具或技术感兴趣.)
我的问题:有没有任何工具可以对这些类型的错误提供详细的反馈?我会喜欢诸如此类的信息
解决方法
我想你可以使用ASM提供的CheckClassAdapter(
http://asm.ow2.org/asm40/javadoc/user/org/objectweb/asm/util/CheckClassAdapter.html).它提供有关验证错误的更多详细信息.