今天Debug代码,跟踪到jdk里源码时,只能看到变量,却无法查到变量的值。怎么办呢?
1. 下载使用带有debug信息的JDK。
下载地址:http://download.java.net/jdk6/ 。当前最新版本为Standard Edition 6u25 Binary Snapshot Releases。
http://download.java.net/jdk6/6u25/promoted/b01/index.html
我自己用的是jdk1.6.02,地址如下:
http://download.java.net/jdk6/6u27/promoted/b03/binaries/jdk-6u27-ea-bin-b03-windows-i586-debug-27_may_2011.jar
下载安装后,在eclipse添加新的JRE。
2. 自己动手重新编译JDK
上面的方法很简单,但是官网上一般只给出最新版本的Debug版,如果要Debug用某个特殊版本怎么办呢?自己编译嘛!前人也给出了很多思路。
1. Enabling debugging inside JRE classes
http://www.javalobby.org/java/forums/t103334.html
介绍了GNU utilities for Win32工具。
2. General: Recompile (Some of) The JDK to Ease Debugging
http://www.java.net/external?url=http://www.javalobby.org/java/forums/t19866.html
这篇文章用的是 bat 脚本。
3. Should Sun build rt.jar with debug information enabled?
http://www.javalobby.org/forums/thread.jspa?messageID=91825915#91825965
这篇直接给出了Ant脚本。
4. 建一个Java工程,利用Eclipse等IDE工具进行编译。
四种方法都试了一下,还是觉得写Ant脚本最简单。不管用哪种方法,打好包后可以通过 Xbootclasspath/p:<the archive you just have created> 参数来优先加载我们的rt_debug.jar。
如果要在Eclipse中调试,需要在原来的JRE上加上我们新的rt_debug.jar。
注意rt_debug.jar要在原来的rt.jar 之前。