gpt4 book ai didi

java - ASM 中的哪些指令仅用于调试?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:32:37 24 4
gpt4 key购买 nike

我想简化我的 asm 代码。到目前为止,我正在使用 Eclipse 中的字节码大纲来学习如何编写我的代码。由于我只看到带有调试信息的字节码,我真的不知道我可以安全地忽略哪些内容,我更希望有知识的人快速回答我自己测试每一种可能的情况。

这些假设是否正确?

  1. 我可以混合不同的样式,即使是在同一个类或方法中(将没有调试信息的代码注入(inject)到有调试信息的方法中)
  2. visitLabel 只需要作为跳转指令的目标,而不是围绕每条指令
  3. visitLineNumber可以省略(调试信息)
  4. visitLocalVariable可以省略(调试信息)

谢谢!

最佳答案

您可以在没有调试信息的情况下编译代码,以便在字节码大纲 View 中查看它,例如为此在 Eclipse 中使用单独的项目。

现在回答你的问题:

  1. 您可以混合使用带调试和不带调试的代码。请注意,在调试此类代码时,调试器不会显示调试信息中省略的变量。
  2. visitLabel 调用用于标记字节码中的任何位置,例如跳转指令的目标,异常处理程序范围和异常处理程序入口点的边界,局部变量和行号的范围,一些新引入的类型注释(即 JSR308 )等。
  3. visitLineNumber 生成有关调试器主要使用的行号的信息,可以省略
  4. visitLocalVariable 生成有关主要由调试器使用的本地变量的信息,可以省略

关于java - ASM 中的哪些指令仅用于调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12070402/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com