eclipse常用断点
1. 条件断点 (Conditional Breakpoint)
断点是调试过程中最常用的功能,在 Eclipse Java 编辑区的行头双击即可设置普通断点,代码运行至此处时会暂停。
条件断点则是在普通断点的基础上增加了触发条件。只有当用户设置的条件满足时,代码运行到断点处才会停止,否则会自动跳过。
设置方法:在断点处点击鼠标右键,选择菜单底部的 "Breakpoint Properties"。

断点属性界面及各选项含义如下所示:

2. 变量断点 (Watchpoint)
断点不仅可以打在语句上,也可以打在变量上。

上图即为变量断点。当变量的值被初始化或发生改变时,程序会停止。当然,变量断点上也可以添加条件,设置方法与上述条件断点一致。
3. 方法断点 (Method Breakpoint)
方法断点是将断点打在方法的入口处。

方法断点的特别之处在于它可以打在 JDK 的源码里。由于 JDK 在编译时通常去掉了调试信息,普通行断点无法生效,但方法断点可以。通过这种方法,可以查看方法的调用栈。
4. 修改变量值 (Change Variable Value)
当代码停在断点处,如果传入的值不正确,如何修改变量值以保证代码继续走正确的流程?或者有一个异常分支老是进不去,能否在调试时修改条件,验证异常分支代码是否正确?
在 Debug 视图的 Variables 小窗口中,可以看到变量 mDestJarName 的值为 " F:\Study\eclipsepro\JarDir\jarHelp.jar "。

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

或者在下方的值查看窗口中直接修改,使用 Ctrl + S 保存后,变量值就会变为修改后的新值。

5. 回退栈帧 (Drop to Frame)
这种调试回退功能不是万能的,只能在当前线程的栈帧中回退,也就是说最多只能退回到当前线程调用的开始处。
回退时,请在需要回退的线程方法上点右键,选择 "Drop to Frame"。

6. 远程调试 (Remote Debugging)
远程调试用于调试不在本机上的程序,主要有两种方式:
- 本机作为客户端
- 本机作为服务端
使用远程调试的前提是服务器端和客户端的代码是一致的。
6.1 本机作为客户端
本机作客户端比较常用。需要在远端服务器上的 Java 程序启动时打开远程调试开关,服务器端需要加上虚拟机参数。
1.5 以前版本(1.5 以后也可用):
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=80001.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 视图,不要以为本机的调试程序没有连接到服务器端。
6.2 本机作为服务端
同本机作为客户端相比,只需要修改一下 "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. 异常断点 (Exception Breakpoint)
经常遇见一些异常导致程序退出,要找到异常发生的地方比较困难。此时可以设置异常断点。

上图中增加了一个 NullPointerException 的异常断点。当异常发生时,代码会停在异常发生处,这对定位问题非常有帮助。
说明:本文内容基于较旧版本的 Eclipse 与 JDK(如 JDK 1.5)编写,部分菜单选项或虚拟机参数在新版本中可能有所调整,但核心调试原理依然适用。原文转自:http://www.cnblogs.com/qingblog
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/eclipse-chang-yong-duan-dian.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。