1.首先遇到了一个问题line unavailable,然后通过以下方式解决:

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

对于想了解JDK源码的同学来说,通过调试JDK源码来学习是一个常用的方法。

如果调试时,不能进入JDK源码,大部分错误都是line unavailable,则需要设置一番。

【Window】-【Preference】-【Java】-【Installed JREs】

这里可以看到Eclipse可以使用的Java环境,默认使用的是JRE(Java Runtime Environment),是不支持调试的,需要替换成JDK(Java Development Kit)。

有事候需要重新remove原来的jre候重新添加一下jdk中的就可以了。

2.后来遇到了问题是:解决Debug JDK source 无法查看局部变量的问题方案(重新编译rt.jar包)

用Eclipse Debug,当跟踪进jdk api里时(比如javax.swing包里的类),无法查看某些local filed的值。这是因为jdk里的代码在打包时删除了一些用于调试的信息,以减小安装包的体积。不过可以通过重新编译jdk源代码来恢复此功能。

http://www.cnblogs.com/zjrodger/p/5110538.html

【原】解决Debug JDK source 无法查看局部变量的问题方案(重新编译rt.jar包)

一.问题阐述
  首先我们要明白JDK source为什么在debug的时候无法观察局部变量,因为在jdk中,sun对rt.jar中的类编译时,去除了调试信息,这样在eclipse中就不能看到局部变量的值。
这样的话,如果在debug的时候查看局部变量,就必须自己编译相应的源码使之拥有调试信息。
要达到这个目的,一是找网上人家已经编译好的版本,剩下的只能自己去编译。
下面我们对于自己编译提供一个方法,希望对大家有所帮助,如果有什么问题,请留言。

二.解决方案
1、选择或创建你的工作目录,比如我选择:E:\
2、在你的工作目录中,创建文件夹jdk_src,用于存放源码;创建文件夹jdk_debug,用于输出编译结果。
3、从你的机器装jdk的地方找到src.zip,在你得JDK_HOME可以找到,比如我的在C:\Program Files\Java\jdk1.7.0_09目录下。然后把src解压到jdk_src目录下。
4、解压完后,选择你需要编译的内容,删除剩下的。一般选择如下的几个文件夹就可以了:java javax org 这三个目录就可以了啊
5、从你的JDK_HOMME\jre\lib中复制rt.jar到你的工作目录中(即E:\),这样做的目的可以让你减少在命令行中输入的文件名。
6、执行如下这条命令:

dir /B /S /X jdk_src\*.java > filelist.txt

  创建一个叫做filelist.txt的文件,这个文件存放了所有你将要编译的类的名称。
7、执行如下的命令:

javac -J-Xms16m -J-Xmx1024m -sourcepath e:\jdk_src -cp e:\rt.jar -d e:\jdk_debug -g @filelist.txt >> log.txt 2>&

  这条命令将要编译所有你指定的文件,并把编译结果输出到jdk_debug目录中,同时产生log.txt日记文件。这个日记文件记录着编译警告,但是没有错误。
8、进入到jdk_debug目录中,输入如下命令:

jar cf0 rt_debug.jar *  

  这个命令可以生成我们需要的rt.jar带编译信息的jar包。
9、把这个生成的rt_debug.jar包复制到JDK_HOME\jre\lib\endorsed。如果没有endorsed目录,自己创建一下。
10、如果你是在eclipse中debug的。点击Window->Installed JRES,选择相应的JDK,点击Edit,r然后选择点击Add External jars,选择我们步骤9中目中的rt_debug.jar,就可以了。

注意:若原来的JRE目录下已经存在了rt.jar包,则要将新编译的rt_debug.jar的位置在原来的jar包之前,如下图所示。

现在完成了所有的步骤了,赶快尝试debug一下,如果可以查看局部变量了,那么恭喜你成功了。

三.参考文献
1、原文链接:http://blog.csdn.net/appleprince88/article/details/21873807
2、debug jdk source can't watch variable what it is
http://stackoverflow.com/questions/18255474/debug-jdk-source-cant-watch-variable-what-it-is

原文地址:

 

JDK源码调试的更多相关文章

  1. jdk源码调试功能

    JDK源码重新编译——支持eclipse调试JDK源码--转载 最近在研究jdk源码,发现debug时无法查看源码里的变量值. 因为sun提供的jdk并不能查看运行中的局部变量,需要重新编译一下rt. ...

  2. eclipse中jdk源码调试步骤

    分析源码是学习一项技术内幕最有效的手段.由于正常的引入JAr包源码没法进行对源码打断点,想要深入了解源码不方便.下面就开始介绍源码调试的步骤. 1.在eclipse新建一个JAVA项目compare_ ...

  3. jdk源码调试进去形参没有值

    https://blog.csdn.net/u010407050/article/details/76690478 1.在你的D:盘新建jdk文件夹,然后在文件夹里面分别创建两个文件夹jdk_src( ...

  4. JDK源码调试常见错误。

    1.删除不需要的代码,即swing相关的代码 2.执行命令时要将前提环境进入文件夹如下: 起初没有完全执行第一条,因为网上说可以根据需要选择相关的代码,于是就没有删除,以后第一次模仿网上的例子的时候要 ...

  5. eclipse调试jdk源码

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

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

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

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

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

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

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

  9. eclipse无法断点调试JDK源码的问题

    最近换了新版的eclipse,在jdk源码里面,打断点发现无法进入源码调试,程序直接跳过,已查资料发现自己eclipse配置的是jre环境的. 此处要配成jdk目录才有效 打开preferences, ...

随机推荐

  1. HDU5127 神坑题---vector 、 list 、 deque 的用法区别

    题意:三个操作 1  a b : 队列中加入(x = a, y = b); -1  a b : 队列中减去(x = a, y = b); 0  p q :从队列的数对中查询哪一对x,y能够让 p * ...

  2. 将Rmarkdown文件转为pdf文件

    knitr包只能够将R markdown文件转为html格式,若想要将其转化为pdf格式,还要安装另一个包 # Install and load package install.packages(&q ...

  3. H5版俄罗斯方块(5)---需求演进和产品迭代

    前言: 产品的形态是不断迭代的, 从粗糙到精致, 从简易到立体. 有了最初的技术积累和时间思考后, 终于明确了该游戏的方向. 我想说的是: 技术不是重点, 产品/用户体验才是核心议题. 结合朋友的游戏 ...

  4. hihoCoder-1036 (AC自动机模板题)

    题目大意:判断模式串中是否出现模板. 代码如下: # include<iostream> # include<cstdio> # include<queue> # ...

  5. ls

    -a, –all 列出目录下的所有文件,包括以 . 开头的隐含文件 -h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G) -l 除了文件名之外,还将文件 ...

  6. Java web项目引用java项目,类型找不到

    Java web项目引用java项目,类型找不到 错误信息: java.lang.ClassNotFoundException: org.codehaus.jackson.map.ObjectMapp ...

  7. 如何创建 CSS

    如何插入样式表 当读到一个样式表时,浏览器会根据它来格式化 HTML 文档.插入样式表的方法有三种: 外部样式表 当样式需要应用于很多页面时,外部样式表将是理想的选择.在使用外部样式表的情况下,你可以 ...

  8. SQL SERVER:使用工具观察与分析数据库中锁信息

    SQL SERVER 2005可以通过Microsoft SQL Server Management Studio的“管理–>活动监视器”–>“右键”–>“进程信息”,这里呈现连接. ...

  9. 使用集成的ADT bundle来搭建android开发环境

    android开发环境的搭建 本文使用集成的ADT bundle来搭建android开发环境,所谓bundle就是谷歌搭建好的一个eclipse+sdk集成环境.需要下载的软件列表如下: 1.ADT ...

  10. SilverlightERP&CRM源码(可用于开发基于Silverlight的CRM,OA,HR,进销存等)

    SilverlightERP系统源代码(支持创建OA.SilverlightCRM.HR.进销存.财务等系统之用) 可用于开发以下系统 SilverlightERP SilverlightCRM Si ...