怎么对jdk核心包进行跟踪调试,并查看调试中的变量值
java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码。虽然官方的jdk自带了源码包src.zip,然而却存在如下两个问题。
a.debug时查看变量十分麻烦
b.sun.*包中的类没有提供API文档及源码
如何解决这两个问题呢?
一.debug时查看rt.jar中的变量
因为oracle提供的jre中rt.jar不带debug信息:orcale在编译src时使用了 javac -g:none,意思是不带任何调试信息,这样可以减小rt.jar的大小,因此即使rt.jar包的source attachement指定了jdk安装包下的src.zip,也不便于调试,会出现诸如不能查看调试时的变量等问题。若想正常调试jdk,就只能重新编译src.zip,下面介绍下编译src.zip的方法。
1.在eclipse中新建一个java项目"jdk",然后在src目录上导入"Archive File",选择源码src.zip导入,导完目录结构如下(网上有说不用管报错,实际上这里的报错一般都是一些转型的问题,直接修复即可)
2.右键项目export...,然后导出为jar包,起名为rt_debug.jar:
3.修改eclipse的jre设置,将rt_debug.jar添加到jre中,并移动到最前面
4.最后再查看debug变量,可以看到变量值了
二.sun.*包中的类没有提供API文档及源码
我只能想到从Open JDK官网下载Open JDK源码,并从中获取sun源码包,加到我创建的jdk工程中并修复报错,然后再导出为jar包(接下来的步骤同debug时查看rt.jar中的变量一样)。
Open JDK源码包下载地址:
Open JDK6:http://download.java.net/openjdk/jdk6/
Open JDK7:http://download.java.net/openjdk/jdk7/
Open JDK8:http://download.java.net/openjdk/jdk8/
单个查看源码及javadoc地址:http://www.docjar.com/html/api/sun/