有时,当我在 Eclipse 中调试代码时,虽然我可以毫无困难地查看和检查类成员变量,但我无法检查在函数中本地声明的变量的值。顺便说一句,当前函数的任何参数都失去了它们的“真实”名称,而是在变量窗口中看到它们的值列为 arg0、arg1、arg2 等,但至少这些值是可见的。
目前,这种情况与核心 JDK 中定义的类有关。我已经验证安装的和当前的 JRE 是一个 JDK。
有没有人能够对这种行为有所了解?
有时,当我在 Eclipse 中调试代码时,虽然我可以毫无困难地查看和检查类成员变量,但我无法检查在函数中本地声明的变量的值。顺便说一句,当前函数的任何参数都失去了它们的“真实”名称,而是在变量窗口中看到它们的值列为 arg0、arg1、arg2 等,但至少这些值是可见的。
目前,这种情况与核心 JDK 中定义的类有关。我已经验证安装的和当前的 JRE 是一个 JDK。
有没有人能够对这种行为有所了解?
它曾经是,你可以从HTTP调试的rt.jar://download.java.net/jdk6/binaries/,但是现在不是了。
所以现在用 -g 构建你自己的 rt.jar似乎是唯一的选择。这很简单:只需使用 JDK 中的 javac 和 jar。
mkdir \tmp; mkdir \tmp\out
src.zip
到JDK安装目录tmp\src
cd src
find -name *.java > files.txt
javac -verbose -g -d \tmp\out -J-Xmx512m -cp "<jdk>\jre\lib\rt.jar";"<jdk>\lib\tools.jar" @files.txt
cd \tmp\out; jar cvf rt.jar *
如果您使用 Eclipse,则不需要 -Xbootclasspath/p:,而只需在启动配置中的 JRE 之前将您的调试 jar 放入 Bootstrap Entries。
您可以在以下位置找到 1.6.0_25 的调试二进制文件:http : //download.java.net/jdk6/6u25/promoted/b03/index.html
这应该让您调试到 1.6 的 Java 库代码。
我尝试了链接(http://www.javaadvent.com/2014/12/recompiling-java-runtime-library-with.html),下载了ant脚本并对其进行了修改。修改:传入<compilerarg line="-g" />
javac。它生成了 rt.jar。替换了 JRE 的 rt.jar。(不要忘记保留备份)。
现在我可以在 eclipse 中的调试过程中观察、检查 rt.jar 中任何类的局部变量。
显然,答案是:
Eclipse 3.4的发行说明指出: