解密Java java.lang.VerifyError:操作数堆栈上的类型错误

时间:2019-05-29 12:21:09

标签: jvm java-bytecode-asm jvm-hotspot codegen

我正在研究一个使用ASM库生成JVM字节码的项目。 当我做错了某些事情并且字节码验证失败时,JVM将打印此描述性错误消息,其中包含一个名为Bytecode的部分,它以十六进制文字表示。

示例错误消息:

java.lang.VerifyError: Bad type on operand stack
....
....
  Bytecode:
    0x0000000: 014d 014e 0336 0401 3a05 013a 0601 3a07
    0x0000010: 013a 0801 3a09 013a 0a01 3a0b 013a 0c01
    0x0000020: 3a0d 013a 0e01 3a0f 013a 1001 3a11 013a
    0x0000030: 1201 3a13 013a 1401 3a15 0336 1601 3a17
....
....

如何使用此打印的错误消息来确定字节码验证失败的原因。是否有关于调试此类错误的任何文档。

0 个答案:

没有答案