• 【原】解决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 FilesJavajdk1.7.0_09目录下。然后把src解压到jdk_src目录下。
    4、解压完后,选择你需要编译的内容,删除剩下的。一般选择如下的几个文件夹就可以了:java javax org 这三个目录就可以了啊
    5、从你的JDK_HOMMEjrelib中复制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:
    t.jar -d e:jdk_debug -g @filelist.txt >> log.txt 2>&1

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

    jar cf0 rt_debug.jar *  

      这个命令可以生成我们需要的rt.jar带编译信息的jar包。
    9、把这个生成的rt_debug.jar包复制到JDK_HOMEjrelibendorsed。如果没有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

  • 相关阅读:
    linux中的信号机制
    函数指针读书笔记
    const读书笔记
    动态规划----0/1背包问题
    函数指针的用法---以冒泡排序为例
    各种排序算法的实现(更新中)
    Flutter滚动型容器组件
    Flutter json转实体类(插件自动生成)
    Flutter 键盘弹出背景图片变形
    Flutter BottomNavigationBar切换页面被重置问题(保存状态)
  • 原文地址:https://www.cnblogs.com/zjrodger/p/5110538.html
Copyright © 2020-2023  润新知