当前位置:首页 > 开发 > 编程语言 > JDK JVM > 正文

如何调试JDK源码

发表于: 2015-06-30   作者:frank1234   来源:转载   浏览:
jdk
摘要: 相信各位小伙伴们跟我一样,想通过JDK源码来学习Java,比如collections包,java.util.concurrent包。 可惜的是sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar。 下面是编译jdk的具体步骤:         1.把C:\java\jdk1.6.0_26\sr
相信各位小伙伴们跟我一样,想通过JDK源码来学习Java,比如collections包,java.util.concurrent包。

可惜的是sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt.jar。

下面是编译jdk的具体步骤:
        1.把C:\java\jdk1.6.0_26\src.zip解压到C:\java\jdk1.6.0_26\src
        2.执行命令 dir /B /S /X C:\java\jdk1.6.0_26\src\*.java > fileList-jdk1.6.0_26-src.txt 生成一个包含所有源文件

列表的txt文档
        3.最重要的一步,运行以下命令
        c:\Java\jdk1.6.0_26\bin\javac -verbose -nowarn -g -source 1.6 -target 1.6 -J-Xms512m -J-Xmx1024m -

bootclasspath  c:\Java\jre6\lib\rt.jar;c:\Java\jre6\lib\jce.jar;c:\Java\jre6\lib\jsse.jar;c:\Java\jre6\lib

\resources.jar;c:\Java\jre6\lib\charsets.jar;c:\Java\jre6\lib\deploy.jar -sourcepath c:\Java\jdk1.6.0_26\src -

classpath c:\Java\jdk1.6.0_26\src -d compiled @fileList-jdk1.6.0_26-src.txt
          其中-d complied是要新建的文件夹,用来存放编译生成的class文件,@fileList-jdk1.6.0_14-src.txt就是刚才生成的

文本文件,这个步骤大概要执行2-3分钟左右。
        4. 执行完毕,所有新编译后的class文件都在complied文件夹中,重新打包生成rt.jar或者覆盖原来rt.jar中的类,生成新

的rt.jar。最后把新生成的rt.jar放到c:\Java\jre6\lib和C:\java\jdk1.6.0_10\jre\lib覆盖原有的rt.jar,覆盖之前最好备份一

下,这样就大功告成了。

需要说明的几点:
A. java最好安装在某盘的根目录下(如c:\Java\jdk1.6.0_10),不要放在program files下,因为这个文件夹名有个空格,执行

javac命令时有可能产生不必要的麻烦。
B. 如果想在eclipse中跟踪调试,需要在Windows-Preferences-Java-Installed JRE下,选择安装的jdk,点edit,然后在列出的jre

system libraries列表中选择rt.jar,设置其中的Source attachment为C:\java\jdk1.6.0_10\src.zip。
C. 要将 fileList-jdk1.6.0_10-src.txt拷贝到bin目录下,并在目录下建好compiled目录,到这个目录下执行脚本3,并且将脚本3

修改为一行。
D.将原rt.jar中的sun等包,拷贝到新的rt.jar下,src.zip中没有sun包的源码。

记得做之前先备份一下rt.jar,别说我没提醒您。

如何调试JDK源码

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
java是一门开源的程序设计语言,喜欢研究源码的java开发者总会忍不住debug一下jdk源码。虽然官方的j
最近在研究jdk源码,发现debug时无法查看源码里的变量值 这给研究源码调试时带来不变,google一下,
起因:故尝试调试下HashMap实现原理,打印出transient Entry<K,V>[] table 变量的变化情况 一
对于想了解JDK源码的同学来说,通过调试JDK源码来学习是一个常用的方法。 如果调试时,不能进入JDK
对于想了解JDK源码的同学来说,通过调试JDK源码来学习是一个常用的方法。 如果调试时,不能进入JDK
vs2013调试 一、源码当前为5.2.0.0,按下面改为5.0.0.1 二、/web.config 版本为5.0.0.0 改为5.0.0.1
  最近在研究asp.net mvc的源码,于是在想,既然提供了源码,那我们如何进入源码调试了?在网上找
安装: 安装memcached之前要先安装Libevent。现在假定Libevent安装在/usr/local/libevent目录了。
在我们日常的java程序调试过程中,经常会对jdk的核心类进行跟踪、调试,这些jdk核心类主要存在于rt.j
附上上几篇文章地址,方便大家查看: 下载源码 编译源码 目录结构 接二连三的事情,时间比较紧张,
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号