如何Debug jdk源码,查看局部变量

学习java最好的办法就是看jdk源代码,面对浩瀚的jdk(光源码就有40M多,比一个大型网站的源码都多)从何入手呢,要是能单步调试跟进到jdk源码里并且能查看其中的局部变量最好了。

可惜的是sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar

废话少说,下面是编译jdk的具体步骤:
1.
C:\java\jdk1.6.0\src.zip解压到C:\java\jdk1.6.0\src
2.
执行命令dir /B /S /X C:\java\jdk1.6.0\src\*.java > fileList-jdk1.6.0-src.txt生成一个包含所有源文件列表的txt文档
3.
最重要的一步,运行以下命令

javac -verbose  -nowarn -g  -source 1.6 -target 1.6 -J-Xms512m-J-Xmx1024m -bootclasspath D:\Java\jre1.6.0\lib\rt.jar;D:\Java\jre1.6.0\lib\jce.jar;D:\Java\jre1.6.0\lib\jsse.jar;D:\Java\jre1.6.0\lib\resources.jar;D:\Java\jre1.6.0\lib\charsets.jar;D:\Java\jre1.6.0\lib\deploy.jar-sourcepath D:\Java\jdk1.6.0\src -classpath D:\Java\jdk1.6.0\src -d compiled@fileList-jdk1.6.0-src.txt

其中-d complied是要新建的文件夹,用来存放编译生成的class文件,@fileList-jdk1.6.0-src.txt就是刚才生成的文本文件,这个步骤大概要执行2-3分钟左右。
4.
执行完毕,所有新编译后的class文件都在complied文件夹中,重新打包生成rt.jar或者覆盖原来rt.jar中的类,生成新的rt.jar。最后把新生成的rt.jar放到c:\Java\jre1.6.0\libC:\java\jdk1.6.0\jre\lib覆盖原有的rt.jar,覆盖之前最好备份一下,这样就大功告成了。

需要说明的几点:
A. java
最好安装在某盘的根目录下(如c:\Java\jdk1.6.0),不要放在program files下,因为这个文件夹名有个空格,执行javac命令时有可能产生不必要的麻烦。
B.
如果想在eclipse中跟踪调试,需要在Windows-Preferences-Java-InstalledJRE下,选择安装的jdk,点edit,然后在列出的jre system libraries列表中选择rt.jar,设置其中的Source attachmentC:\java\jdk1.6.0\src.zip

以上内容转自(修改了其中的jdk安装路径,各位根据jdk安装路径自行修改)

http://www.douban.com/note/211369821/

-----------------------------------------------------------------------------------------

以下内容自己总结

C.输入上面第三步的命令时,一定要小心换行符,否则cmd会把有换行符的当成多条命令。

D.打包时,不要在jar里加入绝对路径

我的做法是进入D\complied目录,执行 jar cvf rt.jar *

即可以生成只带当前包的jar文件

E.eclipse进行编译时,会报ClassNotFound错误,原来是jvm在装载类时,缺少sun.misc.*类文件,查看src.zip,源文件根本没有这个包,可能是sun公司把它去除了,我的办法是找到原来的rt.jar复制其中的sun.misc包放进现在用的rt.jar中。

重新编译,debug查看局部变量成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值