问题

研究JDK源码的同学应该知道,在debug的时候是无法看源码中变量的值的,为什么呢?因为在JDK中,sun对rt.jar中的类编译时,去除了调试信息。那么是否有解决办法呢?答案是肯定的。

解决方案

1.在你的D:盘新建jdk文件夹,然后在文件夹里面分别创建两个文件夹jdk_src(存放源码)和jdk_debug(存放编译结果文件)。

2.从%JAVA_HOME%路径下找到src.zip源码源码压缩包,解压至D:/jdk/jdk_src目录中,并只保留javajavax,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.关于第一步,只保留javajavax,org三个文件夹,如果想保留全部文件夹,请自行尝试。
2.关于第八步,把rt.jar的源文件删除,这个可能会导致有的代码编译不通过,建议保留。

解决Eclipse调试JDK源码无法查看变量值相关推荐

  1. JDK源码重新编译——支持eclipse调试JDK源码--转载

    最近在研究jdk源码,发现debug时无法查看源码里的变量值. 因为sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar. 下面这六步是编译jdk的具体步骤: Step 1:   ...

  2. 跟踪调试JDK源码时遇到的问题及解决方法

    目录 问题描述 解决思路 在IntelliJ IDEA中调试JDK源码 在eclipse中调试JDK源码 总结 问题描述 最近在研究MyBatis的缓存机制,需要回顾一下HashMap的实现原理.于是 ...

  3. Eclipse中关联并调试JDK源码

    eclipse关联JDK源码的一般步骤: 1.依次选择Window -> Preferences: 2.依次选择Java -> Installed JREs -> Jre- -> ...

  4. 设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的值

    最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u9 ...

  5. 调试JDK源码-一步一步看HashMap怎么Hash和扩容

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  6. 调试JDK源码-ConcurrentHashMap实现原理

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  7. 调试JDK源码-Hashtable实现原理以及线程安全的原因

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  8. 调试JDK源码-HashSet实现原理

    调试JDK源码-一步一步看HashMap怎么Hash和扩容 调试JDK源码-ConcurrentHashMap实现原理 调试JDK源码-HashSet实现原理 调试JDK源码-调试JDK源码-Hash ...

  9. 通过CLion 调试JDK源码

    通过CLion 调试JDK源码 0. 简述 0.1 使用环境: 宿主机操作系统:Windows 10 专业版 虚拟机软件:VMware® Workstation 16 Pro 虚拟机操作系统:[ubu ...

最新文章

  1. 攻和防谁更厉害?AI技术在恶意软件检测中的应用和对抗
  2. Linux设备文件简介。
  3. Swift URL含有中文的处理
  4. python中分割字符串两种方法正则分组别名,如何在python中使用正则表达式模块将文本字符串分割成单词?...
  5. [C++] 用Xcode来写C++程序[3] Constants
  6. Qt之QParallelAnimationGroup
  7. (13)Node.js 文件流 缓冲 VS 流
  8. 腾讯网易禁止未成年人本周六玩游戏
  9. 信息论霍夫曼编码c语言,Huffman 信息论与编码 - 下载 - 搜珍网
  10. InnoDB缓存相关优化
  11. GIS中的基本概念收集
  12. 【每日新闻】三星折叠手机媒体试用出故障:屏幕失灵 铰链处凸起
  13. python下载网易云音乐中某个歌单中的全部音乐
  14. 神经+符号知识推理论文浅读4篇
  15. vue数据层思路_vue层级关系的数据管理
  16. sspanel v3 配置的完整教程(转)
  17. 前端学习路线,如何学习前端
  18. 一行代码值200万?充满哲学与禅意的border-radius
  19. 用友u8安装应用服务器输什么,用友u8服务器安装教程
  20. 2015年天翊他爹有想法了

热门文章

  1. Chart and Graph
  2. pytorch中AdaGrad优化器源码解读
  3. 纯CSS实现滚动字幕
  4. python爬虫小项目--飞常准航班信息爬取variflight(上)
  5. 免费的网络带宽、延迟、丢包测试工具 HoloWAN_Recorder_Pro_v2.1.0 安卓端
  6. 常见的几个网络安全问题,你都知道吗?
  7. 【Windows核心编程+第一个内核程序】爆肝120小时整理-80%程序员最欠缺的能力,一半以上研究生毕业了还不懂?理解各种深度技术的基本功
  8. 在CentOS7中设置一个黑客范儿的数据流的桌面
  9. Ubuntu下的系统资源查看
  10. 视频教程-php进阶课程之swoole系列课程精讲(第一季)-PHP