Eclipse debug 调试的几点技巧

在网上看到一篇关于Eclipse debug调试的文章,整理得比较全面,现转载如下:

先提三点

  • 不要使用System.out.println作为调试工具
  • 启用所有组件的详细的日志记录级别
  • 使用一个日志分析器来阅读日志

1、条件断点

想象一下我们平时如何添加断点,通常的做法是双击行号的左边。在debug视图 中,BreakPoint View将所有断点都列出来,但是我们可以添加一个boolean类型的条件来决定断点是否被跳过。如果条件为真,在断点处程序将停止,否则断点被跳过, 程序继续执行。

2、异常断点

在断点view中有一个看起来像J!的按钮,我们可以使用它添加一个基于异常的断点,例如我们希望当NullPointerException抛出的时候程序暂停,我们可以这样:

3、观察点

这个特性我非常喜欢,他允许当一个选定的属性被访问或者被更改的时候程序执行暂停,并进行debug。最简单的办法是在类中声明成员变量的语句行号左边双击,就可以加入一个观察点。

4、查看变量

在选中的变量上使用Ctrl+Shift+d 或者 Ctrl+Shift+i可以查看变量值,另外我们还可以在Expressions View中添加监视。

5、改变变量值

我们可以在Debug的时候改变其中变量的值。在Variables View中可以按下图所示操作。

6、在Main方法中停止

在Run/Debug设置中,我们可以按如下图所示的启用这个特性。程序将会在main方法的第一行停住

7、环境变量

我们可以很方便的在Edit Conriguration对话框中添加环境变量

8、Drop to frame

这个功能非常酷,是我第二个非常喜欢的功能,Drop to frame就是说,可以重新跳到当前方法的开始处重新执行,并且所有上下文变量的值也回到那个时候。不一定是当前方法,可以点击当前调用栈中的任何一个 frame跳到那里(除了最开始的那个frame)。主要用途是所有变量状态快速恢复到方法开始时候的样子重新执行一遍,即可以一遍又一遍地在那个你关注 的上下文中进行多次调试(结合改变变量值等其它功能),而不用重来一遍调试到哪里了。当然,原来执行过程中产生的副作用是不可逆的(比如你往数据库中插入 了一条记录)。

9、Step 过滤

当我们在调试的时候摁F5将进入方法的内部,但这有个缺点有的时候可能会进入到一些库的内部(例如JDK),可能并不是我们想要的,我们可以在Preferences中添加一个过滤器,排除指定的包。

 

10、进入、跳过、返回

其实这个技巧是debug最基本的知识。

  • F5-Step Into:移动到下一步,如果当前的行是一个方法调用,将进入这个方法的第一行。(可以通过第九条来排除)
  • F6-Step Over:移动到下一行。如果当前行有方法调用,这个方法将被执行完毕返回,然后到下一行。
  • F7-Step Return:继续执行当前方法,当当前方法执行完毕的时候,控制将转到当前方法被调用的行。
  • F8-移动到下一个断点处。

Eclipse调试常用技巧

1、 条件断点

断点大家都比较熟悉,在Eclipse Java 编辑区的行头双击就会得到一个断点,代码会运行到此处时停止。

条件断点,顾名思义就是一个有一定条件的断点,只有满足了用户设置的条件,代码才会在运行到断点处时停止。

在断点处点击鼠标右键,选择最后一个"Breakpoint Properties"

断点的属性界面及各个选项的意思如下图,

2、 变量断点

断点不仅能打在语句上,变量也可以接受断点,

上图就是一个变量的打的断点,在变量的值初始化,或是变量值改变时可以停止,当然变量断点上也是可以加条件的,和上面的介绍的条件断点的设置是一样的。

3、 方法断点

方法断点就是将断点打在方法的入口处,

方法断点的特别之处在于它可以打在 JDK的源码里,由于 JDK 在编译时去掉了调试信息,所以普通断点是不能打到里面的,但是方法断点却可以,可以通过这种方法查看方法的调用栈。

4、 改变变量值

代码停在了断点处,但是传过来的值不正确,如何修改一下变量值保证代码继续走正确的流程,或是说有一个异常分支老是进不去,能不能调试时改一下条件,看一下异常分支代码是否正确?

在Debug 视图的 Variables 小窗口中,我们可以看到 mDestJarName 变量的值为 "F:\Study\eclipsepro\JarDir\jarHelp.jar "

我们可以在变量上右键,选择"Change Value..." 在弹出的对话框中修改变量的值,

或是在下面的值查看窗口中修改,保用Ctr+S 保存后,变量值就会变成修改后的新值了。

5、 重新调试

这种调试的回退不是万能的,只能在当前线程的栈帧中回退,也就说最多只能退回到当前线程的调用的开始处。

回退时,请在需要回退的线程方法上点右键,选择 "Drop to Frame"

6、 远程调试

用于调试不在本机上的程序,有两种方式,

1、本机作为客户端

2、本机作为服务端

使用远程调试的前提是服务器端和客户端的代码是一致的。

本机作为客户端

本机作客户端比较常用,需要在远端的服务器上的java程序在启动时打开远程调试开关,

服务器端需要加上虚拟机参数

1.5以前版本(1.5以后也可用):【-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 】

1.5及以上版本:【 -agentlib:jdwp=transport=dt_socket,server=y,address=8000】

F:\Study\eclipsepro\screensnap>java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 -jar screensnap3.jar

连接时远程服务器时,需要在Eclipse中新建一个远程调试程序

这里有一个小地方需注意,连接上的时候貌似不能自动切换到Debug视图,不要以为本机的调试程序没有连接到服务器端。

本机作为服务端

同本机作为客户端相比,只需要修改一下“Connection Type”

这时Eclipse会进入到等待连接的状态

连接程序使用如下参数即可连接本机服务器,IP地址请用实现IP替换~~

【-agentlib:jdwp=transport=dt_socket,suspend=y,address=127.0.0.1:8000】

F:\Study\eclipsepro\screensnap>java -agentlib:jdwp=transport=dt_socket,suspend=y,address=127.0.0.1:8000 -jar screensnap3.jar

远程调试时本地的代码修改可同步到远程,但不会写到远程的文件里,也就是说本地修改会在下次启动远程程序时就没有了,不会影响到下次使用时的远程代码。

有关远程调试更详细点的介绍请参考【使用 Eclipse 远程调试 Java 应用程序】

好像漏了一个断点,异常断点,补一下。

7、异常断点

经常遇见一些异常,然后程序就退出来了,要找到异常发生的地方就比较难了,还好可以打一个异常断点,

上图中我们增加了一个NullPointException的异常断点,当异常发生时,代码会停在异常发生处,定位问题时应该比较有帮助。

时间: 2024-10-25 18:28:36

Eclipse debug 调试的几点技巧的相关文章

Play! Framework Eclipse Debug调试报错解决方法记录

使用Play eclipsify xxxx[项目路径],可以把play new xxxx[项目路径]创建的工程生成为Eclipse的项目 但是在Debug AS 调试的时候,会报以下错误 Error occurred during initialization of VM  agent library failed to init: jdwp    ERROR: Cannot load this JVM TI agent twice, check your java command line f

eclipse debug (调试)基础

进入debug模式: 1.设置断点 2.启动servers端的debug模式 3.运行程序,在后台遇到断点时,进入debug调试状态 ============================= 作用域 功能 快捷键 全局 单步返回 F7 全局 单步跳过 F6 全局 单步跳入 F5 全局 单步跳入选择 Ctrl+F5 全局 调试上次启动 F11 全局 继续 F8 全局 使用过滤器单步执行 Shift+F5 全局 添加/去除断点 Ctrl+Shift+B 全局 显示 Ctrl+D 全局 运行上次启动

eclipse debug (调试) 学习心得

进入debug模式: 1.设置断点 2.启动servers端的debug模式 3.运行程序,在后台遇到断点时,进入debug调试状态 ============================= 作用域 功能 快捷键 全局 单步返回 F7 全局 单步跳过 F6 全局 单步跳入 F5 全局 单步跳入选择 Ctrl+F5 全局 调试上次启动 F11 全局 继续 F8 全局 使用过滤器单步执行 Shift+F5 全局 添加/去除断点 Ctrl+Shift+B 全局 显示 Ctrl+D 全局 运行上次启动

eclipse debug 调试找不到资源问题解决

eclipse debug 的时候,如果使用maven bulid,就可能找不到class,这种情况就需要先停止服务,然后配置 Run configurations-Source,然后remove掉Default目录,点Add,然后选Java project,选择对应的Java项目,然后运行服务 就可以正常进入debug了. 原文地址:https://www.cnblogs.com/ydcblogs/p/8257704.html

eclipse debug调试java程序的九个技巧

九个技巧: 逻辑结构 条件debug 异常断点 单步过滤 跳到帧 Inspect expressions display 远程debug 最早开始用eclipse的debug的时候,只会F5 F6 F7 F8,甚至F7都不是很搞的明白是怎么用的,那时候资浅,碰不到需要复杂debug的代码,慢慢工作深入了,场景碰多了,就需要各种debug技巧来提升定位bug效率,以前找人帮忙排查问题,看他开各种窗口debug各种溜甚是羡慕嫉妒恨,慢慢久病成医自己也用溜了eclipse的一些主要的debug技巧.稍

eclipse debug调试mapreduce程序

1.将mapred-site.xml文件拷贝一份到项目中 <configuration>     <property>         <name>mapreduce.framework.name</name>             <value>yarn</value>     </property>     <property>          <name>mapred.child.java

Eclipse Debug

Eclipse Debug 配置 创建和使用 Debug 配置 Eclipse Debug 配置类似于运行配置但它是用于在调试模式下开启应用. 打开 Debug 配置对话框步骤为:Run > Debug Configurations . 从左侧列表中选择 "Java Application" 选项来创建 Java 应用的调试配置并 New 按钮. 对话框中的描述信息有: 调试配置的名称 项目名称 主类名 arguments(参数)选项卡的描述信息有: 零个或多个程序参数 零个或多

Eclipse的Debug调试技巧

作为开发人员,掌握开发环境下的调试技巧十分有必要.我们在编写java程序的过程中,经常会遇到各种莫名其妙的问题,为了检测程序是哪里出现问题,经常需要增加日志,看变量的值,这样调试很麻烦.假设我每天花费1小时在调试我的应用程序上的话,那累积起来的话也是很大量的时间.由于这个原因,用这些时间来重视并了解所有使我们调试更方便的功能.那能为你省下一些时间,也将会使你的生活更安逸.轻松. 首先我们需要注意三个点:不要使用System.out.println作为调试工具\使用一个日志分析器来阅读日志\启用所

【链接】Eclipse的Debug调试技巧

Eclipse的Debug调试技巧大全 https://mp.weixin.qq.com/s/bORg9YxJiby2WenYRrXY-w 使用Eclipse调试Java程序的10个技巧 https://mp.weixin.qq.com/s/VLIlZFl3WxIfR7naZzh_Cg 原文地址:https://www.cnblogs.com/xiaostudy/p/10188785.html