Debug JDK源码没变量值怎么办?

Posted 趣谈编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Debug JDK源码没变量值怎么办?相关的知识,希望对你有一定的参考价值。

对于程序员而言,阅读源码是一个非常重要的能力,相信Java程序员最常看的就是JDK的源码了,但有时候我们想具体看看源码在运行时某个变量的值,就会发现Debug时看不到变量的值,这是因为官方在编译 rt.jar 中的类的时候去除了调试信息,那么该怎么办呢?


有两种办法:一种是去网上找编译好有调试信息的 rt.jar,另一种是自己去编译JDK源码,下面就是自己编译的详细过程,希望大家第一次不要怕麻烦,跟着做,弄好之后以后调试就非常方便了

来源:博客园,文章左下角可查看原文


问题效果图:



解决后的效果:


Debug JDK源码没变量值怎么办?


具体步骤:


1.制作可调试的 rt.jar 包


1.1 .在D盘新建jdk7_src及jdk7_rt-debug两个文件夹


Debug JDK源码没变量值怎么办?


1.2.复制JDK源码


复制到D:/jdk7_src,解压.效果如下图


Debug JDK源码没变量值怎么办?

Debug JDK源码没变量值怎么办?


1.3.选择要编译的源码


原文中说,留下Java,javax,org三个文件夹就足够了,其他都可以删除。


我只是把swing的内容删除了,其他都留下了。大伙可以随意。

swing包目录位置:comsunjavaswing,javaxswing 

 

1.4.得到要处理的java文件名


命令及效果图如下:


要查看一下,自动生成的filelist.txt中是否有内容哦,没有数据的话下面的操作是没用的。

 

d:
cd jdk7_src
dir /B /S /X *.java>filelist.txt


Debug JDK源码没变量值怎么办?


1.5.复制jre/lib/rt.jar


把JDK安装目录(复制src.zip的那个目录)下jre/lib下的rt.jar复制到jdk7_src目录下


Debug JDK源码没变量值怎么办?

Debug JDK源码没变量值怎么办?


1.6.生成一些可调试的class文件夹


执行如下命令,成功后,jdk7_rt-debug文件夹会产生一些可调试的class文件夹,如下图:


如果没有,请打开jdk7_src/log.txt,ctrl+F查找“错误”,并解决。


一般,将报错的java路径及路径对应的文件删除,再执行dir /B /S /X *.java > filelist.txt即可。

 

javac -J-Xms16m -J-Xmx1024m -sourcepath D:jdk7_src -cp D:jdk7_srcrt.jar -d D:  jdk7_rt-debug -g @filelist.txt >> log.txt 2>&1


Debug JDK源码没变量值怎么办?


1.7.将这些文件打包成Jar

命令和效果如下图


cd ..  
cd jdk7_rt-debug  
jar cf0 rt_debug.jar *  


Debug JDK源码没变量值怎么办?


2.使用可调试的 rt.jar


2.1.把rt_debug.jar放入JDK中

放入java_home/jre/lib/endorsed目录


Debug JDK源码没变量值怎么办?


2.2.将rt_debug.jar加入Eclipse使用的JDK中


Debug JDK源码没变量值怎么办?


2.3.添加rt_debug.jar的源码包


注意:若原来的JRE目录下已经存在了rt.jar包,则要将新编译的rt_debug.jar的位置在原来的jar包之前,如下图所示。


Debug JDK源码没变量值怎么办?


2.4.开始debug吧,你成功了!!


Debug JDK源码没变量值怎么办?



-END-


推荐阅读:






趣谈编程

让知识变的简单有趣



以上是关于Debug JDK源码没变量值怎么办?的主要内容,如果未能解决你的问题,请参考以下文章

ecplise调试源码的变量值

解决Eclipse调试JDK源码无法查看变量值

设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的值

设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的1

怎么 debug JDK 源码?

啥?不会Debug jdk源码