怎么对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导入,导完目录结构如下(网上有说不用管报错,实际上这里的报错一般都是一些转型的问题,直接修复即可)

怎么对jdk核心包进行跟踪调试,并查看调试中的变量值
2.右键项目export...,然后导出为jar包,起名为rt_debug.jar:

怎么对jdk核心包进行跟踪调试,并查看调试中的变量值
怎么对jdk核心包进行跟踪调试,并查看调试中的变量值
3.修改eclipse的jre设置,将rt_debug.jar添加到jre中,并移动到最前面

怎么对jdk核心包进行跟踪调试,并查看调试中的变量值
4.最后再查看debug变量,可以看到变量值了

怎么对jdk核心包进行跟踪调试,并查看调试中的变量值
怎么对jdk核心包进行跟踪调试,并查看调试中的变量值

二.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/