JDK源码调试

来源:互联网 发布:名字抽奖软件 编辑:程序博客网 时间:2024/05/16 07:37

1.首先遇到了一个问题line unavailable,然后通过以下方式解决:

http://blog.csdn.net/xuefeng0707/article/details/8738869

 对于想了解JDK源码的同学来说,通过调试JDK源码来学习是一个常用的方法。

如果调试时,不能进入JDK源码,大部分错误都是line unavailable,则需要设置一番。

【Window】-【Preference】-【Java】-【Installed JREs】

这里可以看到Eclipse可以使用的Java环境,默认使用的是JRE(Java Runtime Environment),是不支持调试的,需要替换成JDK(Java Development Kit)。

有事候需要重新remove原来的jre候重新添加一下jdk中的就可以了。

2.后来遇到了问题是:解决Debug JDK source 无法查看局部变量的问题方案(重新编译rt.jar包)

 用Eclipse Debug,当跟踪进jdk api里时(比如javax.swing包里的类),无法查看某些local filed的值。这是因为jdk里的代码在打包时删除了一些用于调试的信息,以减小安装包的体积。不过可以通过重新编译jdk源代码来恢复此功能。


java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码。虽然官方的jdk自带了源码包src.zip,然而在debug时查看变量却十分麻烦。例如调试HashMap的 public V put(K key, V value) 方法并查看key的值时会提示:

可以看到不能显示变量的值了,原因在于oracle提供的jre中rt.jar不带debug信息:orcale在编译src时使用了 javac -g:none,意思是不带任何调试信息,这样可以减小rt.jar的大小。若想正常调试jdk,就只能重新编译src.zip。这里介绍下编译src.zip的方法。

  1. 在eclipse中新建一个java项目“jdk”,然后在src目录上选择"Import"导入, 再选"Archive File",选择jdk安装目录的源码src.zip导入,导完目录结构如下(不用管编译报错):

  2. 右键项目export...,然后导出为jar包,起名为rt_debug.jar:

  3. 修改eclipse的jre设置,将rt_debug.jar添加到jre中,并移动到最前面:

  4. 最后再查看debug变量,可以看到变量值了:


三.参考文献
1、https://my.oschina.net/xionghui/blog/497361
2、http://www.cnblogs.com/zhangshiwen/p/5742036.html