正常情况下,当我们调试的代码涉及到了JDK的源码时,在debug时的Variables界面里面许多变量以及它的显示时跟我们自定义的Java源文件是不同的。比如当调试到HashMap.java的put方法时,显示是这样的:
可以看到Variables只有this、arg0和arg1三个变量,分别对应当前HashMap实例和put传入的两个参数key和value。
如果你想详细看方法里面各个变量的值是如果计算和变化的话,这种程度的显示显然是不够的。
那么有什么办法可以解决呢,在网上找了很久总算找到了一篇博客,按照里面的步骤操作完之后就可以看到JDK源码内部方法各个变量的详细值了,效果图如下:
附原文链接:
Eclipse调试JDK看不到变量的值是什么
下面是我按照上面博客整理出的步骤:
1、找个位置新建文件夹jdk7_src和jdk7_rt-debug(我的是D:\JDK\jdk7_rt-debug和D:\JDK\jdk7_src)
2、将JDK下的src.zip(C:\Program Files (x86)\Java\jdk1.7.0_75\src.zip)复制到jdk7_src目录,解压只留下java,javax,org三个文件夹其他删除。
3、cmd进入jdk7_src目录执行指令:
dir /B /S /X *.java > filelist.txt
4、把JDK下的rt.jar(C:\Program Files (x86)\Java\jdk1.7.0_75\jre\lib\rt.jar)复制到jdk7_src
5、cmd执行指令生成可调试的class文件夹:
javac -J-Xms16m -J-Xmx1024m -sourcepath D:\JDK\jdk7_src -cp D:\JDK\jdk7_src\rt.jar -d D:\JDK\jdk7_rt-debug -g @filelist.txt >> log.txt
6、cmd进入jdk7_rt-debug目录将class文件夹打包成jar:
jar cf0 rt_debug.jar *
7、把rt_debug.jar放入JDK中(C:\Program Files (x86)\Java\jdk1.7.0_75\jre\lib\endorsed),endorsed没有这个文件夹就新建一个
8、将rt_debug.jar加入Eclipse使用的JDK中。Window->Preferences->Java->Installed JREs->Edit->Add External JARs,选择rt_debug.jar加入,加入之后在jar列表中选中rt_debug.jar选择Source Attachment->External location->External File选择JDK下的src.zip即可