jdk源码调试-较好解决方案

Jdk源码断点看不到变量值

原因: sun对rt.jar中的类编译时,去除了调试信息
解决: 可以自己编译Jdk

使用eclipse编译Jdk

新建一个java-project
将D:/programfiles/Jdk/Jdk8/src.zip解压放到java-project的src中,并处理报红色的类,一般swing的可以直接删除
使用export功能导出普通jar命名为rt_debug.jar
将该jar拷贝到D:/programfiles/Jdk/Jdk8/jre/lib/endorsed/rt_debug.jar
再到eclipse全局Jdk设置中添加一个扩展jar,指定为rt_debug.jar(该Jar和原系统的jar们并存)
注意: 以上处理结果后确实能调试Jdk源码了,进入断点也能Inspect各种变量的值了,但是还不是我们想要的更好的效果,我们想要的效果是: 在Java代码中改变了注释就能立刻在class中显示,并且调式断点能进入java而非class文件

Java代码中改变了注释就能立刻在class中显示

做之前有个前提,就是不采用rt_debug.jar的方式了,改为直接修改rt.jar(修改一个文件即可,比如修改HashMap.java的注释(注意不能修改实际代码,且行不能变,行变了要关掉开发工具重新替换rt.jar)
编译好这类生成的HashMap相关的14个class去替换掉rt.jar中的HashMap相关的14个class,只需要替换一次并重启eclipse,Jdk就会认为是一个新的rt.jar文件了,这时断点进入class也能Inspect变量的值)
采用这种方式后,相当于换了一个rt.jar文件,继续看下面:
项目->右键属性->java Build Path->Libraries找到rt.jar->JRE System Library [JavaSE-1.8]->rt.jar->Source attachment编辑为/jdk/src(这里我的Jdk源码项目就在工程中,名称就是jdk的一个普通Java Project)
这样做后,相当于在断点时,进入的是rt.jar里面的class文件,但源文件是jdk/src下的文件,eclipse重启后,修改Java中的注释,立刻就能在class中看到被改变了

调式断点能进入java而非class文件

右键需要Debug的文件->Debug Configuations->Source->Add->Java Project->选择jdk项目确定
这样做后下次调试就能进入Java文件了,但缺点很明显,每个需要调试的类都要设置Source,很麻烦,但目前尚未找到解决方法,不过已经比起最初好很多了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2023年Java面试宝典

您的鼓励是对我的肯定,共建希望

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值