解决eclipse调试jdk源码无法查看变量值

在京奋斗者 在京奋斗者     2022-12-11     510

关键词:

问题
研究JDK源码的同学应该知道,在debug的时候是无法看源码中变量的值的,为什么呢?因为在JDK中,sun对rt.jar中的类编译时,去除了调试信息。那么是否有解决办法呢?答案是肯定的。

解决方案
1.在你的D:盘新建jdk文件夹,然后在文件夹里面分别创建两个文件夹jdk_src(存放源码)和jdk_debug(存放编译结果文件)。

2.从%JAVA_HOME%路径下找到src.zip源码源码压缩包,解压至D:/jdk/jdk_src目录中,并只保留java,javax,org三个文件夹。

3.从%JAVA_HOME%\\jre\\lib找到rt.jar,将它拷贝到D:/jdk文件夹。

4.打开DOS命令窗口,用命令cd命令进入D:/jdk文件夹,然后执行命令dir /B /S /X .\\jdk_src\\*.java > .\\filelist.txt,完成后会在D:/jdk目录生成filelist.txt文件,里面为待编译的文件路径*/*.java。

5.执行命令javac -J-Xms16m -J-Xmx1024m -sourcepath .\\jdk_src -cp .\\rt.jar -d .\\jdk_debug -g @.\\filelist.txt >> .\\log.txt 2>&1会编译filelist.txt文件中列出的*.java源文件,编译的*.class文件会放入D:/jdk/jdk_debug文件夹,同时编译过程中会在D:/jdk生成log.txt文件。

6.执行cd命令切换到D:/jdk/jdk_dug,然后执行jar cf0 rt_debug.jar *将*.class文件打成jar,打包完成后会在D:/jdk/jdk_debug目录中生成rt_debug.jar。

7.把这个生成的rt_debug.jar包复制到%JDK_HOME%\\jre\\lib\\endorsed下。如果没有endorsed目录,自己创建一下。

8.在eclipse里面找到Window->Installed JRES,选择jdk,点击Edit,然后点击Add External jars,选择刚才创建的rt_debug.jar导入,然后把rt_debug.jar移动到rt.jar的前面,最后选中rt_debug.jar,点击Source Attachment选择%JAVA_HOME%/jdk/src.zip添加源文件,最最后,重启eclipse。

 

好了,各位,到此为止就全部完成了。别说话,用心去感受!

更新补充 2018/08/02
根据评论网友反映的问题补充如下: 
1.关于第一步,只保留java,javax,org三个文件夹,如果想保留全部文件夹,请自行尝试。 
2.关于第八步,把rt.jar的源文件删除,这个可能会导致有的代码编译不通过,建议保留。
--------------------- 
作者:一曲破东风 
来源:CSDN 
原文:https://blog.csdn.net/u010407050/article/details/76690478 
版权声明:本文为博主原创文章,转载请附上博文链接!

设置eclipse可以debug模式调试jdk源码,并显示局部变量的值

...然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码。 整个设置过程也很简单:首先你要安装好JDK(我的JDK安装路径根目录是D:Javajdk-8u92-windows-x64),JDK安装路径里有个“src.zip”就是JDK的源码文... 查看详情

设置eclipse可以debug模式调试jdk源码,并显示局部变量的1

...然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码。 整个设置过程也很简单:首先你要安装好JDK(我的JDK安装路径根目录是D:Javajdk-8u92-windows-x64),JDK安装路径里有个“src.zip”就是JDK的源码文... 查看详情

eclipse无法断点调试jdk源码的问题

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

Inno Setup:如何查看变量值或写入调试输出?

】InnoSetup:如何查看变量值或写入调试输出?【英文标题】:InnoSetup:Howtowatchvariablesvaluesorwritetodebugoutput?【发布时间】:2013-01-1809:43:21【问题描述】:在InnoSetup中调试时如何查看变量值?如何打印一些东西来调试输出?谢谢【问... 查看详情

java在调试的时候如何查看类中的静态变量值

以下是示例代码:首先进入调试模式(以Eclipse为例),在右上角进入(添加调试模式)点击图示按钮选择Debug成功进入调试模式在需要观察的类中的静态变量值处打上断点,以下是打断点的方法:如图,在左边那一块蓝色区域(... 查看详情

调试器完成后查看最后一个变量值

】调试器完成后查看最后一个变量值【英文标题】:Seelastvariablevalueafterdebuggerfinishes【发布时间】:2020-01-2617:09:23【问题描述】:是否有一个选项可以标记一个变量,以便在编写代码时可以查看它在调试执行完成之前的最后一个... 查看详情

使用eclipse,myeclipse测试的时候如何查看变量值?

...里的变量的值如何查看。。以前习惯用JBuilder,第一次用Eclipse,是在是不熟悉的很。。。我试了用右键点,可是没有watch选项啊,只有undo,opendeclaration,cut,south,references,addto,runas等选项,没有watch啊,能说详细点么,谢谢了... 查看详情

java无法运行,我是win7系统,求助!!!

...t都不需要再去安装参考技术A无法访问WindowsInstaller服务的解决方法:1、开始—运行—输入“regedit”,确定即打开注册表编辑器。2、找到HKEY_LOCAL_MACHINE& 查看详情

windows设置多个jdk环境

...ath=C:ProgramFiles(x86)Javajdk1.7.0_80in  #指向jdk的安装目录,Eclipse/NetBeans/To 查看详情

使用mobx插件查看mobx的变量值

mobx浏览器调试:可以知道store值、方法在chrome上安装插件Mobx,可以查看store、history、match、location等内容    查看详情

swift解决debugger中左侧无法获取变量值的问题

断点后,左侧变量全部无值,po变量warning:Swifterrorinmodule项目名.Debuginfofromthismodulewillbeunavailableinthedebugger.error:inauto-import:failedtogetmodule‘项目名‘fromASTcontext:桥接文件中引入pods第三方库文件导入方式不对如果你是通过Cocoapods来使... 查看详情

在 logcat 中打印变量值以在 android 中进行调试

】在logcat中打印变量值以在android中进行调试【英文标题】:printingvaluesofvariablesinlogcatfordebugginginandroid【发布时间】:2011-10-1020:19:34【问题描述】:我的活动中有浮点类型的变量/字段。有什么方法可以在logcat中记录这些值,因为L... 查看详情

c语言中怎样在调试中查看变量的值

...的那个界面看啊与使用的编程工具有关,不同编程工具在调试时查看变量值的方法不同。具有图形化界面的编程工具,在调试中右键点击变量,会有查看值选项,选择后即可查看。如果没有图形界面,则需要键入对应的指令,具... 查看详情

gdb调试print打印不出变量值或者不准确

...项会与-gstabs+冲突,去掉-gstabs+,只保留-gdwarf-2选项可以解决gdb调试的时候print变量不准和有些变量显示不出来的问题。参考http://bbs.csdn.net/topics/390708777?page=1#post-398696875 另外, 查看详情

c#有没有debug调试输出的语句提供输出变量值?

想在程序调试过程中看到变量的相关值函数输出值有什么方法吗?我觉得MessageBox和断点查看有点慢.Debug.WriteLine(Trace.WriteLine(具体可以百度,也可以打断点啊....追问Debug是什么命名空间的?追答System.Diagnostics参考技术A将变量的值写入T... 查看详情

java程序编译通过但是运行时显示“找不到或无法加载主类helloworld”,怎么解决?

参考技术A既然javac编译已经通过,这说明变量java-home已经配置的没有问题了。(java-home对应的变量值为javac.exe所在的路径;一般是在安装路径下,例如c:\\ProgramFiles\\Java\\jdk1.7.0_45\\bin)。 那第一种可能就是:问题就出在Path变... 查看详情

状态变量值正在丢失

....none.这怎么可能?此外,如果您查看屏幕截图,您会看到调试器控制台面板显示的nex 查看详情

如何调试 JSF/EL

...在JSF页面调试EL?我想看变量值,函数调用等等。最好的解决方案是Eclipse插件,但任何其他可能性都比猜测“为什么这个表达式无法正确呈现?”更好。【问题讨论】:【参考方案1】:在JSF/Facelets中最接近的是将<ui:debug/&am... 查看详情