背景

有的时候你想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%\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_debug,然后执行  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添加源文件,并把rt.jar的源文件删除(不用删除,本人测试不删除可以成功),最最后,重启eclipse。

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

如何在Eclipse中Debug调试Java代码的更多相关文章

  1. Eclipse中debug调试java代码一直报Source not found的解决办法

    今天使用eclipse的debug调试代码,一直没法正常调试,一按F6就提示Source not found 根据提示发现可能是另一个项目影响了,所以把另一个项目Close Project,这次直接t ...

  2. Eclipse 中 Debug 调试 java 代码一直报 Source not found

    今天使用eclipse的debug调试代码,一直没法正常调试,一按F6就提示Source not found 根据提示发现可能是另一个项目影响了,所以把另一个项目Close Project,这次直接t ...

  3. 远程debug调试java代码

    远程debug调试java代码 日常环境和预发环境遇到问题时,可以用远程调试的方法本地打断点,在本地调试.生产环境由于网络隔离和系统稳定性考虑,不能进行远程代码调试. 整体过程是通过修改远程服务JAV ...

  4. Eclipse中更改默认java代码格式【转】

    在写代码时常常有2种代码样式习惯,如下图.由于一直习惯了第一种代码格式,而看第二种代码格式时感觉代码很乱,总找不到“{ }”对称的感觉.Eclipse自动格式化代码的快捷方式是Ctrl+Shift+F ...

  5. 沉淀再出发:如何在eclipse中查看java的核心代码

    沉淀再出发:如何在eclipse中查看java的核心代码 一.前言   很多时候我们在eclipse中按F3键打算查看某一个系统类的定义的时候,总是弹出找不到类这样的界面,这里我们把核心对应的代码加进 ...

  6. Eclipse远程调试Java代码的三种方法

    Eclipse远程调试Java代码的三种方法, 第1种方法是用来调试已经启动的Java程序,Eclipse可以随时连接到远程Java程序进行调试, 第2种方法可以调试Java程序启动过程,但是Ecli ...

  7. java如何在eclipse编译时自动生成代码

    用eclipse写java代码,自动编译时,如何能够触发一个动作,这个动作是生成本项目的代码,并且编译完成后,自动生成的代码也编译好了, java编辑器中就可以做到对新生成的代码的自动提示? 不生成代 ...

  8. 调试Java代码(Eclipse)汇总

    Java 10个调试技巧(基础❤❤❤❤❤) Eclipse断点调试(和上一篇基本类似,补充❤❤) 使用Eclipse开发和调试java程序(从安装eclipse开始,特别细,有设置条件断点,回退的具体 ...

  9. [安卓][转]Android eclipse中程序调试

    一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...

随机推荐

  1. IaaS,PaaS,SaaS 的区别

    原文:http://www.ruanyifeng.com/blog/2017/07/iaas-paas-saas.html 越来越多的软件,开始采用云服务. 云服务只是一个统称,可以分成三大类. Ia ...

  2. PhpStorm 安装ApiDebugger

    ApiDebugger,是一个开源的接口调试IntelliJ IDEA插件,具有与IDEA一致的界面,无需切换程序即可完成网络API请求,让你的code更加沉浸式. 安装 File->Setti ...

  3. Java开发笔记(五十一)多态的发生场景

    江湖上传闻,面向对象之所以厉害,是因为它拥有封装.继承与多态三项神技,只要三板斧一出,号令天下谁敢不从.前面费了老大的劲才讲清楚封装和继承,那么多态又是怎样的神乎其神呢?下面先通过一个简单的例子来说明 ...

  4. excel函数2

    1截取函数的应用 实例: 2.日期的年周月星期数据处理

  5. 后端开发者的Vue学习之路(五)

    目录 上节内容回顾 使用第三方组件库 如何发起请求 请求错误处理 请求带参 以get的方式带参: 以post的方式带参: 封装处理 请求的配置 axios实例 实现调用自定义函数来发起请求 抽取axi ...

  6. 启用WCF压缩提升Dynamics 365 CE的网络性能

    摘要: 微软动态CRM专家罗勇 ,回复307或者20190308可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . 本文系根据微 ...

  7. 虚拟主机、VPS主机与云服务器的区别

    本文转载自星光云 http://www.365yun.top/news/list.asp?newsid=22 虚拟主机是利用虚拟技术将一台物理服务器划分成多个“虚拟”服务器,虚拟主机的出现大大节省了服 ...

  8. 在windows下搭建汇编编程环境

    汇编语言程序搭建masm+debug 下载链接 dosbox:链接:https://pan.baidu.com/s/1TgkfU-d5w6Nz9TOYro1pYw 密码:mp83 masm:链接:ht ...

  9. Github上html页面(包括CSS样式和JS效果)如何显示出来

    在看Github上项目时,发现有的html页面效果能很好的展现出来,而有的则不能.对这个问题很好奇,因此研究了一下,最终做到了将页面展示出来的目的.下面以我的Github的开源项目bootstrap- ...

  10. 爬虫之Requests&beautifulsoup

    网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕 ...