调试JDK源码,无法追踪显示局部变量的解决方案

原创 2016年08月30日 16:53:38
  • 什么原因导致我们无法调试源码的时候无法追踪局部变量的值?

    1.因为在我们通常在oracle官网下载的jdk源码包的时候,官网默认对rt.jar中类编译的时候,默认去除了调试信息,使得jar包的体积变得较小,因此我们在本地调试jdk源码的时候不会显示局部变量的值

    2.我们看一下现象:
    这里写图片描述
    从图中可以看出,局部变量值不可获得
    3.解决方案很明显了,我们只要手动重新编译一下jdk的源码包,带上调试信息即可

  • 解决方案-windows系统

    1.首先我们找到jdk的根目录,进入找到源码包src.jar,解压该文件,一般我们只需要调试java,javax,org三个目录下的源码,如果你需要调试其他包下面的源码,请保留相应目录,删除剩余目录即可。解压后的路径为:jdk根目录/jdk_src

    2.打开命令行,进入到jdk根目录,键入:
    dir /B /S /X jdk_src*.java > filelist.txt //目的是列出我们刚刚解压出的所有java文件绝对路径清单

    3.重新编译我们需要的源码,加入调试信息,首先进入jdk根目录,创建jdk_debug目录,打开命令行,进入到jdk根目录,键入:
    javac -J-Xms16m -J-Xmx1024m -sourcepath jdk_src -cp jre\lib\rt.jar -d jdk_debug -g @filelist.txt >>log.txt 2>&1 //这里需要注意,我们需要用当前版本jdk的去编译,不要跨版本编译(eg.1.7去编译1.8的jdk),命令大致解释如下:我们编译刚刚在jdk_src目录下列在filelist中的java类到jdk_debug目录下,并把输出日志打在log.txt文件中

    4.在jdk_debug目录下打开命令行,键入:
    jar cf0 rt_debug.jar * 打包该目录下的文件到rt_debug.jar

    5.把这个生成的rt_debug.jar包复制到JDK_HOME\jre\lib\endorsed。如果没有endorsed目录,自己创建一下。

    6.再去尝试调试源码,发现局部变量可以追踪了

  • 解决方案-mac系统

    1.方法类似相同,只有第二点有区别,键入:
    ls -R ./jdk_src -R|sed s#^#pwd# |grep ‘.java$’ >filelist.txt

  • 备注

    1.intellij idea 15.*以上的版本默认支持局部变量的debug追踪功能,可以不进行jdk源码的重新编译

    参考资料:
    (http://stackoverflow.com/questions/18255474/debug-jdk-source-cant-watch-variable-what-it-is)
    (http://blog.csdn.net/appleprince88/article/details/21873807)

转载请申明出处

版权声明:本文为博主原创文章,未经博主允许不得转载。

(4) Debug JDK source 无法查看局部变量的问题解决方案

一.问题阐述 首先我们要明白JDK source为什么在debug的时候无法观察局部变量,因为在jdk中,sun对rt.jar中的类编译时,去除了调试信息,这样在eclipse中就不能看到局部变...

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

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

解决Debug JDK source 无法查看局部变量的问题方案

一.问题阐述 首先我们要明白JDK source为什么在debug的时候无法观察局部变量,因为在jdk中,sun对rt.jar中的类编译时,去除了调试信息,这样在eclipse中就不能看到局部变量的值...

解决Debug JDK source 无法查看局部变量的问题方案

原文地址:http://blog.csdn.net/appleprince88/article/details/21873807 [+] 一.问题阐述 首先我们要明白JDK source为什么在d...

Eclipse debug JDK源码无法看到局部变量

Generally speaking, to be able to watch the variables while stepping through JDK source code, you ne...

关于iReport5.6.0无法正常启动或者闪退或者JDK8不兼容的解决方案

如果是停留在这个界面,并且闪退,或者直接无法启动那就是出现了问题 如果双击运行,无法正常启动,需要查看自己电脑上是否有安装了JDK,由于这个软件是Java语言编写的,当然需要运行在JVM...

64位win8系统-安装JDK后运行出现找不到或无法加载主类的解决方案

一些有必要的说明: 我的电脑系统是 :windows 8 专业版 64位 如图: 安装的JDK是:jdk-7u17-windows-x64 也就是目前最新发布的64位JDK7,默认...
  • ycc5617
  • ycc5617
  • 2013年03月17日 11:49
  • 7859

如何Debug jdk源码,查看局部变量

学习java最好的办法就是看jdk源代码,面对浩瀚的jdk(光源码就有40M多,比一个大型网站的源码都多)从何入手呢,要是能单步调试跟进到jdk源码里并且能查看其中的局部变量最好了。 可惜的是sun...

解决方案源码

  • 2014年05月15日 15:21
  • 243KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:调试JDK源码,无法追踪显示局部变量的解决方案
举报原因:
原因补充:

(最多只允许输入30个字)