如何跟踪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的世界中遨游了。

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

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

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

  2. eclipse如何debug调试jdk源码(任何源码)并显示局部变量

    最近要看struts2源码 仿照了一下查看jdk源码的方式 首先你要有strtus2的jar包和源码,在struts官网上下载时,选择full版本,里面会有src也就是源码了. jar导入项目,保证可 ...

  3. eclipse如何debug调试jdk源码

    java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码.虽然官方的jdk自带了源码包src.zip,然而在debug时查看变量却十分麻烦.例如调试HashMa ...

  4. 调试JDK源码时,不能查看变量的值

    前几天本来想以debug模式看一下JDK的源码,进入调试模式时才发现,根本看不到方法里面变量值的情况.为什么呢?JDK现在的版本中,编译过后,去除了里面的调试信息.解决办法是,编译那些类,使其带有调试 ...

  5. eclipse如何debug调试jdk源码,并显示局部变量

    http://blog.csdn.net/xuefeng0707/article/details/8738869 http://blog.csdn.net/leehsiao/article/detai ...

  6. xcode在调试时无法查看变量值

    现象:在xcode中调试程序的时候,无论是鼠标指在变量上,还是在gdb中po命令都看不到内存中变量的值. 解决办法:在Project的Build中把 Optimization Level 设置成 No ...

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

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

  8. eclipse调试jdk源码

    摘要 介绍使用eclipse调试jdk源码 java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码.虽然官方的jdk自带了源码包src.zip,然而在debu ...

  9. JDK源码包结构分类

    最近查看JDK源码时,无意间发现几个类在陌生包里:com.sun.*.sun.*.org.*,google了一把总结了下以备他人搜索,如内容有误欢迎指正!   Jre库包含的jar文件(jdk1.6) ...

随机推荐

  1. 使用GitHub-Pages创建博客和图片上传问题解决

    title: 使用GitHub Pages创建博客和图片上传问题解决 date: 2017-10-22 20:44:11 tags: IT 技术 toc: true 搭建博客 博客的搭建过程完全参照小 ...

  2. 【转】qt-vs-addin:Qt4和Qt5之VS插件如何共存与使用

    原则上,两者是不可以同时存在的,但是如果都安装了,该如何分别使用他们呢? Qt4 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.1.11-opensour ...

  3. guider – 全系统Linux性能分析器

    Guider是一个免费且开源的,功能强大的全系统性能分析工具,主要以Python for Linux 操作系统编写. 它旨在衡量系统资源使用量并跟踪系统行为,从而使其可以有效分析系统性能问题或进行性能 ...

  4. 转:.Net内存泄露原因及解决办法

    1.    什么是.Net内存泄露 (1).NET 应用程序中的内存 您大概已经知道,.NET 应用程序中要使用多种类型的内存,包括:堆栈.非托管堆和托管堆.这里我们需要简单回顾一下. 以运行库为目标 ...

  5. CreateProjectFormat——初始项目目录格式

    百度云链接:https://pan.baidu.com/s/1f_2YaMf9619Rt5AlC6nryQ 密码:v2cb 修改中...

  6. Linux 下解压 rar 文件

    网上下载rar 压缩文件的使用,在linux在我们需要对其进行解压缩,这个时候,我们需要安装 rar相关的文件,来进行解压缩. 1. 下载 我们进入rarlab网站,进行下载 rar for linu ...

  7. EF使用笔记

    最近写接口导数据到大数据中心,但是实体数据字段非常多,如果手动去建数据库表和写插入语句效率非常低,所以想都试一试EF,效率之高,简直吓人,所以此文详细记录操作过程以备下次使用时之用.仅需六部就可完成建 ...

  8. python基础学习11----函数

    一.函数的定义 def 函数名(参数列表): 函数体 return语句 return语句不写或后边不加任何对象即为return None 二.函数的参数 无参数 def func1(): print( ...

  9. 解决:Windows 强制升级为8.1之后 Mysql连接不上, VisualSVN Server无服务

    1.mysql 连不上,只要将mysql重新加为windows服务即可.(我的是mysql-5.6.24-winx64 解压版)    方法:mysqld --install mysql --defa ...

  10. 5.Solr4.10.3中配置中文分词器

    转载请出自出处:http://www.cnblogs.com/hd3013779515/ 1.下载IK Analyzer 2012FF_hf1.zip并上传到/home/test 2.按照如下命令安装 ...