zoukankan      html  css  js  c++  java
  • 如何在Eclipse中Debug调试JDK代码

    背景

    有的时候你想debug调试Java的源代码,就想试图在Java源代码中设置断点,在Eclipse中常常会出现Unable to insert breakpoint Absent Line Number Information错误。导致这个错误的原因是Eclipse默认使用了JRE环境,而事实上只有JDK环境才包含有Debug信息。接下来我们介绍如何为你的项目设置JDK环境,从而让你可以调试Java源代码。
     
    解决办法
    1. 在Eclipse中,Window->Preferences->Java->Compiler,确保以下选项都勾选上:


    2. 在Eclipse中,Window->Preferences->Java->Installed JREs,选择Add,在JRE Home中选择JDK路径(因为只有JDK支持源码调试),并且给它合适的命名。退出保存后,选择JDK路径。



    3. 右键你的工程项目,Properties,Java Build Path->Libraries,找到JRE System Library,选择Edit。使用Alternate JRE中你创建的JDK。


    4. 应该就大功告成了 。
     
    如何debug断点可以查看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%jrelib找到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 . t.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_debug,然后执行  jar cf0 rt_debug.jar *     将*.class文件打成jar,打包完成后会在D:/jdk/jdk_debug目录中生成rt_debug.jar。

    7.把这个生成的rt_debug.jar包复制到%JDK_HOME%jrelibendorsed下。如果没有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添加源文件,并把rt.jar的源文件删除(不用删除,本人测试不删除可以成功),最最后,重启eclipse。

     

    其实这里把rt.jar的源文件可以保留,不用删除,本人保留rt.jar的源文件测试后没问题

     

  • 相关阅读:
    gimp 语言设置
    gnome 3.4 评测
    linux 添加PATH路径
    永中office2012 linux版 使用初步感受
    Bio per常规用法(1、读取序列)
    blast程序 介绍 简介
    genewise运行过程中遇到的错误及其解决方法
    gnome3 隐藏标题栏
    Bio per常规用法(2、翻译蛋白)
    genewise 编译过程中遇到的 getline冲突
  • 原文地址:https://www.cnblogs.com/myseries/p/10758565.html
Copyright © 2011-2022 走看看