重新编译src.zip方便调试JDK
2017-02-27 09:32
190 查看
java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码。虽然官方的jdk自带了源码包src.zip,然而在debug时查看变量却十分麻烦。例如调试HashMap的 public V put(K key, V value) 方法并查看key的值时会提示:
![](http://static.oschina.net/uploads/space/2015/0826/153530_Kn2U_1990220.png)
![](http://static.oschina.net/uploads/space/2015/0826/154053_zETd_1990220.png)
可以看到不能显示变量的值了,原因在于oracle提供的jre中rt.jar不带debug信息:orcale在编译src时使用了 javac -g:none,意思是不带任何调试信息,这样可以减小rt.jar的大小。若想正常调试jdk,就只能重新编译src.zip。这里介绍下编译src.zip的方法。
在eclipse中新建一个java项目“jdk”,然后在src目录上导入"Archive File",选择源码src.zip导入,导完目录结构如下(不用管编译报错):
![](http://static.oschina.net/uploads/space/2015/0826/160213_r0Ca_1990220.png)
右键项目export...,然后导出为jar包,起名为rt_debug.jar:
![](http://static.oschina.net/uploads/space/2015/0826/160504_ziHF_1990220.png)
![](http://static.oschina.net/uploads/space/2015/0826/160504_7snz_1990220.png)
修改eclipse的jre设置,将rt_debug.jar添加到jre中,并移动到最前面:
![](http://static.oschina.net/uploads/space/2015/0826/160801_lg5X_1990220.png)
最后再查看debug变量,可以看到变量值了:
![](http://static.oschina.net/uploads/space/2015/0826/160953_Cgsb_1990220.png)
![](http://static.oschina.net/uploads/space/2015/0826/153530_Kn2U_1990220.png)
![](http://static.oschina.net/uploads/space/2015/0826/154053_zETd_1990220.png)
可以看到不能显示变量的值了,原因在于oracle提供的jre中rt.jar不带debug信息:orcale在编译src时使用了 javac -g:none,意思是不带任何调试信息,这样可以减小rt.jar的大小。若想正常调试jdk,就只能重新编译src.zip。这里介绍下编译src.zip的方法。
在eclipse中新建一个java项目“jdk”,然后在src目录上导入"Archive File",选择源码src.zip导入,导完目录结构如下(不用管编译报错):
![](http://static.oschina.net/uploads/space/2015/0826/160213_r0Ca_1990220.png)
右键项目export...,然后导出为jar包,起名为rt_debug.jar:
![](http://static.oschina.net/uploads/space/2015/0826/160504_ziHF_1990220.png)
![](http://static.oschina.net/uploads/space/2015/0826/160504_7snz_1990220.png)
修改eclipse的jre设置,将rt_debug.jar添加到jre中,并移动到最前面:
![](http://static.oschina.net/uploads/space/2015/0826/160801_lg5X_1990220.png)
最后再查看debug变量,可以看到变量值了:
![](http://static.oschina.net/uploads/space/2015/0826/160953_Cgsb_1990220.png)
![](http://static.oschina.net/uploads/space/2015/0826/160953_Qz3H_1990220.png)
相关文章推荐
- 重新编译JDK的src.zip=>rt_debug.jar,使调试可以进入系统类审查变量
- 重新编译jdk,使其带有调试信息
- JDK源码重新编译——支持eclipse调试JDK源码--转载
- 使用ant重新编译jdk 加入调试信息
- 调试、编译开发环境Openfire_src_3_5_1.zip源代码编译与用户管理(1)
- 用ant重新编译jdk加入调试信息
- JDK源码重新编译——支持eclipse调试JDK源码--转载
- 使用deb-src包重新编译bash使之能够输出日志到rsyslog的local1
- 编译环境与生成环境的JDK版本不一样,报:java.util.zip.ZipException: error in opening zip file
- 调试、修改OpenCV源代码并重新编译
- fatal error LNK1103:调试信息损坏;请重新编译模块 ssleay32MD.lib 问题
- JavaSE8基础 windows7 Java的jdk的源代码存在了src.zip中
- Eclipse配置JDK的源代码的src.zip
- 使用srcrpm包重新编译bash使之能够输出日志到rsyslog的local1
- 编译src.zip Java1.8 src.zip
- 重新编译了GDB还是不能远程调试。
- VS2008 启动调试不重新编译程序
- fatal error LNK1103: 调试信息损坏;请重新编译模块
- 非常方便的shell脚本opencv编译以及gdb调试
- OGRE库编译和使用问题,重定义以及dxguid.lib 调试信息损坏,请重新编译 等各种问题解决