您的位置:首页 > 编程语言 > Java开发

JDK源码调试

2017-06-23 12:12 204 查看
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的方法。

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



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





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



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





三.参考文献
1、https://my.oschina.net/xionghui/blog/497361
2、http://www.cnblogs.com/zhangshiwen/p/5742036.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jdk