解决Eclipse调试JDK源码无法查看变量值
问题
研究JDK源码的同学应该知道,在debug的时候是无法看源码中变量的值的,为什么呢?因为在JDK中,sun对rt.jar
中的类编译时,去除了调试信息。那么是否有解决办法呢?答案是肯定的。
解决方案
1.在你的D:
盘新建jdk
文件夹,然后在文件夹里面分别创建两个文件夹jdk_src
(存放源码)和jdk_debug
(存放编译结果文件)。
2.从%JAVA_HOME%
路径下找到src.zip
源码源码压缩包,解压至D:/jdk/jdk_src
目录中,并只保留java
,javax
,org
三个文件夹。
3.从%JAVA_HOME%\jre\lib
找到rt.jar
,将它拷贝到D:/jdk
文件夹。
4.打开DOS命令窗口,用命令cd
命令进入D:/jdk
文件夹,然后执行命令dir /B /S /X .\jdk_src\*.java > .\filelist.txt
,完成后会在D:/jdk
目录生成filelist.txt
文件,里面为待编译的文件路径*/*.java
。
5.执行命令javac -J-Xms16m -J-Xmx1024m -sourcepath .\jdk_src -cp .\rt.jar -d .\jdk_debug -g @.\filelist.txt >> .\log.txt 2>&1
会编译filelist.txt
文件中列出的*.java
源文件,编译的*.class
文件会放入D:/jdk/jdk_debug
文件夹,同时编译过程中会在D:/jdk
生成log.txt
文件。
6.执行cd命令切换到D:/jdk/jdk_dug
,然后执行jar cf0 rt_debug.jar *
将*.class
文件打成jar
,打包完成后会在D:/jdk/jdk_debug
目录中生成rt_debug.jar
。
7.把这个生成的rt_debug.jar
包复制到%JDK_HOME%\jre\lib\endorsed
下。如果没有endorsed目录,自己创建一下。
8.在eclipse里面找到Window->Installed JRES
,选择jdk
,点击Edit
,然后点击Add External jars
,选择刚才创建的rt_debug.jar
导入,然后把rt_debug.jar
移动到rt.jar的前面,最后选中rt_debug.jar
,点击Source Attachment
选择%JAVA_HOME%/jdk/src.zip
添加源文件,并把rt.jar
的源文件删除,最最后,重启eclipse。
好了,各位,到此为止就全部完成了。别说话,用心去感受!
更新补充 2018/08/02
根据评论网友反映的问题补充如下:
1.关于第一步,只保留java
,javax
,org
三个文件夹,如果想保留全部文件夹,请自行尝试。
2.关于第八步,把rt.jar
的源文件删除,这个可能会导致有的代码编译不通过,建议保留。
解决Eclipse调试JDK源码无法查看变量值相关推荐
- JDK源码重新编译——支持eclipse调试JDK源码--转载
最近在研究jdk源码,发现debug时无法查看源码里的变量值. 因为sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar. 下面这六步是编译jdk的具体步骤: Step 1: ...
- 跟踪调试JDK源码时遇到的问题及解决方法
目录 问题描述 解决思路 在IntelliJ IDEA中调试JDK源码 在eclipse中调试JDK源码 总结 问题描述 最近在研究MyBatis的缓存机制,需要回顾一下HashMap的实现原理.于是 ...
- Eclipse中关联并调试JDK源码
eclipse关联JDK源码的一般步骤: 1.依次选择Window -> Preferences: 2.依次选择Java -> Installed JREs -> Jre- -> ...
- 设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的值
最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u9 ...
- 调试JDK源码-一步一步看HashMap怎么Hash和扩容
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 调试JDK源码-ConcurrentHashMap实现原理
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 调试JDK源码-Hashtable实现原理以及线程安全的原因
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 调试JDK源码-HashSet实现原理
调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...
- 通过CLion 调试JDK源码
通过CLion 调试JDK源码 0. 简述 0.1 使用环境: 宿主机操作系统:Windows 10 专业版 虚拟机软件:VMware® Workstation 16 Pro 虚拟机操作系统:[ubu ...
最新文章
- 攻和防谁更厉害?AI技术在恶意软件检测中的应用和对抗
- Linux设备文件简介。
- Swift URL含有中文的处理
- python中分割字符串两种方法正则分组别名,如何在python中使用正则表达式模块将文本字符串分割成单词?...
- [C++] 用Xcode来写C++程序[3] Constants
- Qt之QParallelAnimationGroup
- (13)Node.js 文件流 缓冲 VS 流
- 腾讯网易禁止未成年人本周六玩游戏
- 信息论霍夫曼编码c语言,Huffman 信息论与编码 - 下载 - 搜珍网
- InnoDB缓存相关优化
- GIS中的基本概念收集
- 【每日新闻】三星折叠手机媒体试用出故障:屏幕失灵 铰链处凸起
- python下载网易云音乐中某个歌单中的全部音乐
- 神经+符号知识推理论文浅读4篇
- vue数据层思路_vue层级关系的数据管理
- sspanel v3 配置的完整教程(转)
- 前端学习路线,如何学习前端
- 一行代码值200万?充满哲学与禅意的border-radius
- 用友u8安装应用服务器输什么,用友u8服务器安装教程
- 2015年天翊他爹有想法了
热门文章
- Chart and Graph
- pytorch中AdaGrad优化器源码解读
- 纯CSS实现滚动字幕
- python爬虫小项目--飞常准航班信息爬取variflight(上)
- 免费的网络带宽、延迟、丢包测试工具 HoloWAN_Recorder_Pro_v2.1.0 安卓端
- 常见的几个网络安全问题,你都知道吗?
- 【Windows核心编程+第一个内核程序】爆肝120小时整理-80%程序员最欠缺的能力,一半以上研究生毕业了还不懂?理解各种深度技术的基本功
- 在CentOS7中设置一个黑客范儿的数据流的桌面
- Ubuntu下的系统资源查看
- 视频教程-php进阶课程之swoole系列课程精讲(第一季)-PHP