一.问题阐述
  首先我们要明白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 >&

  这条命令将要编译所有你指定的文件,并把编译结果输出到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的。点击Eclipse上方窗口的Window --> --> Preferences --> Java --> 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

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

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

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

  2. rt.jar包添加源文件只需要关联到已安装对应jdk目录下source.zip源码文件即可

    项目中配置的JRE System Libriry下的rt.jar包,需要关联源文件时候,只需要点击“Attach Source...“按钮,选择"External File..." ...

  3. 曹工力荐:调试 jdk 中 rt.jar 包部分的源码(可自由增加注释,修改代码并debug)

    背景 大家知道,jdk安装的目录下,一般会有个src.zip包,这个包基本对应了rt.jar这个包.rt.jar这个包里面,就放了jdk中,jdk采用java实现的那部分类库代码,比如java.lan ...

  4. Android Studio NDK 代码 Source Insight调试 (NDK 目前开发方案 | NDK 编译 | 导入 so 库 | 项目编码转换)

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/52088039 最近在移植一个 JNI 项目, 比较纠结, A ...

  5. 【maven】排除maven中jar包依赖的解决过程 例子:spring cloud启动zipkin,报错maven依赖jar包冲突 Class path contains multiple SLF4J bindings.

    一直对于maven中解决jar包依赖问题的解决方法纠结不清: 下面这个例子可以说明一个很简单的解决方法: 项目启动报错: Connected to the target VM, address: '1 ...

  6. debug jdk source can't watch variable what it is

    https://www.cnblogs.com/shuaiqing/p/7525841.html https://stackoverflow.com/questions/18255474/debug- ...

  7. idea中使用Data Source and Drivers时,如果使用自己自定义的jar包

  8. eclipse 如何debug jdk源码(转)

    转:http://blog.csdn.net/cherrycheng_/article/details/51004386 原英文地址:http://stackoverflow.com/question ...

  9. 【java-console】如何双击运行可执行jar包及遇到依赖dll报错问题的解决办法

    如何配置双击运行可执行jar包的步骤,请移步到   这里   查看具体的操作,此处不再介绍. 本文主要解决如何处理依赖dll报错的问题解决办法. 我有一个jar包可执行文件运行需要依赖第三方的dll文 ...

随机推荐

  1. Tensoflw.js - 01 - 安装与入门(中文注释)

    Tensoflw.js - 01 - 安装与入门(中文注释) 参考 W3Cschool 文档:https://www.w3cschool.cn/tensorflowjs/ 本文主要翻译一些英文注释,添 ...

  2. java 多线程之:wait()、notify()、notifyAll()等方法

    wait().notify().notifyAll()等方法介绍: 在Object.java中,定义了wait(), notify()和notifyAll()等接口.wait()的作用是让当前线程进入 ...

  3. golang channel 的使用

    本文对channel使用中的几个疑惑,以例子的形式加以说明. 普通channel 缺省情况下,发送和接收会一直阻塞着,直到另一方准备好. 例如: package main import ( " ...

  4. 【数据库】使用JMeter创建数据库(Mysql)测试

    我的环境:MySQL:mysql-essential-5.1.51-win32 jdbc驱动:我已经上传到csdn上一个:http://download.csdn.net/detail/paulwin ...

  5. Oracle Grid control 11g及Active DataGuard 11g安装部署

    Oracle Grid control 11g及Active DataGuard 11g安装部署(一) 原贴 http://blog.csdn.net/lichangzai/article/detai ...

  6. 剑指offer-python面试篇第一部分

    互联网协议定义(分别有4层.5层及7层协议的说法,以下从上层向下层介绍)? a) 四层协议:应用层.传输层.网络层.网络接口层 a) 五层协议: 应用层:用户使用的应用程序都归属于应用层,作用为规定应 ...

  7. Java中对话框的弹出

    最近在做学校的课程设计,java编程需要用到对话框弹出,第一反应是js中的alert和confirm,java的话瞬间懵,查阅学习总结如下,用以以后的学习 1.显示一个错误对话框,该对话框显示的 me ...

  8. 关于启动tomcatINFO警告错误问题解决

    关于启动tomcatINFO警告错误问题解决: #apr 与 tomcat-native 提供更好的伸缩性.性能和集成到本地服务器技术.如果没有apr技术,启动tomcat 时出现如下提示:INFO: ...

  9. cpu监控之二:dstat

    首先我们使用dstat命令来查看下我们的CPU情况,他能够实时的输出我们的信息, dstat 2 10(每2秒采集一次共采集10次) [test@test pos-gateway]$ dstat Yo ...

  10. 廖雪峰Java1-1Java入门-java简介

    Java特点: 一种面向对象的跨平台变成语言 以字节码方式运行在虚拟机上 自带功能齐全的类库 非常活跃的开源社区支持 Java优点: 简单.健壮.安全 跨平台,一次编写,到处运行 高度优化的虚拟机 J ...