我一直认为,一旦编译了 Java 源代码,变量就会映射到堆栈位置;此外,它们可能在类文件中包含有关变量名称及其范围的信息,但这是可选的 AFAIK。
问题是 - 我的 Eclipse/IDEA IDE 如何允许我设置包含局部变量名称的监视表达式?对我来说,这很难理解:)
最佳答案
所有这些 IDE 的调试服务都基于 JavaTM Platform Debugger Architecture (JPDA) .
更准确地说,他们都在使用 Java Virtual Machine Tool Interface (JVM TI) ,它取代了 JDK5 的实验性 JVMPI(Java 虚拟机分析接口(interface))。
JVMTI 包含一个 Watched Field function和一个 SetFieldModificationWatch function .
但是那不包括局部变量:实际上有一段时间以来打开了一个 RFE:bug 4228507 .
所以在局部变量的情况下,机会是某种 BCI使用(字节码分析)(如 TPTP Eclipse module does )。
关于java - Eclipse/IDEA/等如何。调试器获取有关局部变量值和监视表达式值的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2892572/