java-Eclipse / IDEA / etc如何调试器获取有关局部变量值和监视表达式值的信息?

我一直认为,一旦您的Java源代码被编译,则将变量映射到堆栈位置.此外,它们可能在类文件中包含有关变量名称及其范围的信息,但这是可选的AFAIK.

问题是-我的Eclipse / IDEA IDE如何允许我设置包含局部变量名称的监视表达式?对我来说,很难理解:)

解决方法:

所有这些IDE的调试服务都基于JavaTM Platform Debugger Architecture (JPDA).
更准确地说,它们都使用Java Virtual Machine Tool Interface (JVM TI),它从JDK5代替了实验性的JVMPI(Java虚拟机概要分析接口).

该JVMTI包括Watched Field functionSetFieldModificationWatch function.

但这不包括局部变量:实际上从现在开始已有一个RFE:bug 4228507.
因此,在局部变量的情况下,可能会使用某种类型的BCI(字节码工具)(例如TPTP Eclipse module does).

上一篇:java-我可以在调试期间更改私有字段的值吗?


下一篇:C#-高级System.Transactions调试