解决debug到jdk源码时不能查看变量值的问题

目录

  • 如何跟踪jdk源码

    • 1、 编译源码
    • 2、 关联源码
    • 3、 大功告成

如何跟踪jdk源码

看到这个标题大概大家都会在心里想谁还跟踪个源码呀,在eclipse中打个断点,以debug的方式运行,然后F5进入方法,F6跳过方法,F7跳出方法。但是不知道大家有没有注意到,如果你跟踪到的是jdk源码的话,比如HashMapput方法,即使你F5进入到这个方法的内部了,你也看不到你put的 key 和 value 的实际值。但是我们既然要跟踪源码,那么肯定要看到我们设置的 key 和 value 是如何历经九九八十一难才进入到 HashMap 这个桶之中的。为什么说是桶,大家有兴趣的可以自己去深入了解一下HashMap,这里我就不做过多的介绍了。

这是我们跟踪源码看到的情况:

这是我们想要看到的情况:

接下来就是今天的正题了


1、 编译源码

1.1 、简单介绍

首先我们要知道一个jar也就是rt.jar, 它是JAVA基础类库,也就是你在java doc里面看到的所有的类的class文件,但是 orcale 在编译jdk源码的时候为了减小jar包的大小,使用的是 javac -g:none 也就是不带任何的调试信息。这就是我们跟踪jdk源码但是看不到变量值的罪魁祸首,但是上帝在给你关了一扇门的同时也会给你开一扇窗的。那么我现在就来带你一下这扇窗是怎么打开的。

上面这张图是jdk安装目录,可以看到这个有个src.zip,它就是今天的主角:jdk源码,你可以把它解压出来看一下里面的内容,其实就是一个个的java类。

1.2、 开始编译源码

  1. 我们需要将它解压出来,至于放在哪里看你心情,只要你能找得到就可以了,因为我们它是我们今天的重头戏。解压出来就是下面这些东西

  1. 打开eclipse新建一个java工程,命名也看你心情。

  1. 将第一步解压出来的那6个文件夹全部复制到你工程下的src中(其实不需要全部,有些是可以删除的,但是为了省事就全部都复制进去好了。)

  1. 其中有报错,但是你不用管,你只需要等到eclipse将这个工程编译完成后将其导出为jar文件。选中src-->右键-->选择Export

  1. 取好你的名字,选择放到哪里,然后Finish就可以了。至此我们就完成第一步了。

2、 关联源码

  1. 在你的eclipse的工具栏选择window-->preferences,找到Installed JREs, 选择你使用的jdk点击Edit进行编辑。

  1. 在编辑窗口点击 Add External JARs 选择我们刚刚编译好导出的那个jar包。

  1. 红色的jar就是我们自己导出的jar,我们要将我们导出的jar往上移,移到蓝色的 rt.jar 上面。然后Finish

  2. 将我们编译的jar和src.zip进行关联。选择JRE System Library 找到里面我们编译的jar, 右键-->Propertites。

  1. Propertites 选择 External File... 找到我们最开始的src.zip并选择它。然后Aplly ok。一切结束。

3、 大功告成

现在你就可以愉快的跟踪源码,看看你的变量是怎么在java的世界中遨游了。

原文地址:https://www.cnblogs.com/zc-programer/p/9938508.html

时间: 2024-09-28 17:47:59

解决debug到jdk源码时不能查看变量值的问题的相关文章

eclipse如何debug调试jdk源码

java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码.虽然官方的jdk自带了源码包src.zip,然而在debug时查看变量却十分麻烦.例如调试HashMap的 public V put(K key, V value) 方法并查看key的值时会提示: 可以看到不能显示变量的值了,原因在于oracle提供的jre中rt.jar不带debug信息:orcale在编译src时使用了 javac -g:none,意思是不带任何调试信息,这样可以减小rt.jar

调试JDK源码时可编辑操作的实现

目录 一.解压源码压缩包 二.创建Java项目 三.复制源码文件到文件夹 四.Platform Settings中新增一个SDK 五.修改新建SDK的 Sourcepath 配置 六.修改 Project 以及 Modules 的 SDK 七.项目结构图 八.测试调试过程中对源码进入注释 以下操作在以下环境中测试通过:idea 2019.3,jdk8源码包 一.解压源码压缩包 从jdk安装目录中找到 src.zip 的源码压缩包,解压后得到源码文件夹 二.创建Java项目 因主要目的是调试源码,

JDK源码包结构分类

最近查看JDK源码时,无意间发现几个类在陌生包里:com.sun.*.sun.*.org.*,google了一把总结了下以备他人搜索,如内容有误欢迎指正! Jre库包含的jar文件(jdk1.6):resources.jar.rt.jar.jsse.jar.jce.jar.charsets.jar.dnsns.jar.localedata.jar等共10个jar文件,其中resource.jar为资源包(图片.properties文件):rt.jar为运行时包,子包结构如下图: Java.*.j

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

最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u92-windows-x64),JDK安装路径里有个"src.zip"就是JDK的源码文件压缩包: 设置好环境变量的JAVA_HOME变量和PATH变量(JAVA_HOME变量值也是D:\Java\jdk-8u92-windows-x64). 然后打开Eclipse设置可以Debug模式调试

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

最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u92-windows-x64),JDK安装路径里有个"src.zip"就是JDK的源码文件压缩包: 设置好环境变量的JAVA_HOME变量和PATH变量(JAVA_HOME变量值也是D:\Java\jdk-8u92-windows-x64). 然后打开Eclipse设置可以Debug模式调试

idea 导入 jdk源码 解决compile code 后阅读jdk 源码

在用intelliJ IDEA阅读代码时,跟踪到例如java.io.File类文件时,在关键代码段总会出现 “compile code”字样,使人不能真正跟踪到代码内部去. 为解决此问题,如下操作: step1:下载jdk源码,src.jar 1.1 mac安装的jdk路径 :/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/ 源码所在位置:/library/java/javavirtualmachines/1.6.0_65-b14-462.j

eclipse 如何debug jdk源码(转)

转:http://blog.csdn.net/cherrycheng_/article/details/51004386 原英文地址:http://stackoverflow.com/questions/18255474/debug-jdk-source-cant-watch-variable-what-it-is 问题效果图: 解决后的效果: 具体步骤: 1.制作可调试的rt.jar包 1.1 .在D盘新建jdk7_src及jdk7_rt-debug两个文件夹 1.2.复制JDK源码 将环境变

重新编译jdk源码,启用debug信息

我有一个不知道是好还是不好的习惯,搞不懂的一些玩意儿,喜欢调试然后单步执行看这玩意儿到底是怎么运行的. 今天看到正则表达式的时候,appendReplacement()这个方法怎么也看不明白它是怎么工作的,于是想调试源码单步执行,然后watch几个关键的变量看看. 刚开始的时候,eclipse里调试模,单步,发现没有办法进入方法内. 用google百度了一下,发现是JRE配置的问题. 使用jre是不可以的,需要使用jdk的环境.(之前真的没有注意到这一点) 于是window->Preferenc

myeclipse调试代码的时候看不到变量的值和jdk源码重新编译

Q:myeclipse调试代码的时候看不到变量的值? A: 调试的类的Class文件里没有包含LocalVariableTable属性表, 这是因为在编译时,编译者为了减少文件大小而不把属性表的信息放在Class文件中. 使用命令为javac -g>http://hllvm.group.iteye.com/group/topic/25798--解决方法:需要重新编译一份用于debug版的. Q:重新编译jdk源码,启用debug信息 >http://www.cnblogs.com/thecat