use*_*138 34 java eclipse debugging
有时当我在Eclipse中调试代码时,虽然我可以毫无困难地查看和检查类成员变量,但我无法检查函数中本地声明的变量值.顺便说一下,当前函数的任何参数都会丢失它们的"真实"名称,而是在"变量"窗口中将它们的值列为arg0,arg1,arg2等,但至少值是可见的.
目前,这与核心JDK中定义的类有关.我已经验证安装的和当前的JRE是JDK.
有人能够对这种行为有所了解吗?
Von*_*onC 24
显然,答案是:
JDK附带的rt.jar(核心Java类所在的位置)未使用.class文件中包含的完整调试信息进行编译,因此调试器没有本地变量信息.
不幸的是,这不是Eclipse可以做的任何事情 - 所有调试器都会遇到与JDK核心类相同的问题.
Eclipse 3.4的发行说明指出:
缺少调试属性
调试器要求使用调试属性编译类文件,如果它能够显示行号和局部变量.通常,类库(例如,"rt.jar")在没有完整的调试属性的情况下进行编译,因此这些类的局部变量和方法参数在调试器中不可见.
Geo*_*eng 10
它曾经是,你可以从HTTP调试的rt.jar://download.java.net/jdk6/binaries/,但是现在不是了.
因此,使用-g构建自己的rt.jar似乎是现在唯一的选择.这很简单:只需使用JDK中的javac和jar.
mkdir \tmp; mkdir \tmp\outsrc.zip在JDK安装目录中解压缩到tmp\srccd srcfind -name *.java > files.txtjavac -verbose -g -d \tmp\out -J-Xmx512m -cp "<jdk>\jre\lib\rt.jar";"<jdk>\lib\tools.jar" @files.txtcd \tmp\out; jar cvf rt.jar *如果使用Eclipse,则不需要-Xbootclasspath/p:,而只需在启动配置中将调试jar放入JRE之前的Bootstrap Entries.