IDEA中的Debug功能介绍

本文详细介绍了IntelliJIDEA2023.2版本的Debug功能,包括基本操作如设置断点、控制程序流程,以及高级用法如卡住特定条件的断点、Stream流调试、异常处理和观察变量值。

说明:本文介绍IDEA中的Debug功能,基于2023.2(Ultimate Edition)版本

简单介绍

首先,在程序需要停止的所在行号上,鼠标左键,可设置一个断点,是一个红色圆点标志,表示程序使用Debug模式启动时,会在此位置停住。

在这里插入图片描述

另外,如果是正在运行中的项目,表示此断点可用状态,会额外有个√(所以,如果你是个微服务项目,有多个服务,而打的断点没有这个√,可能表示你目前打开的代码不是该服务的)

在这里插入图片描述

基础操作

现在,来介绍一下下面这一行图标表示的功能;

在这里插入图片描述

从左往右,分别是:

  • 重新Debug运行程序(Ctrl + F5);

  • 停止项目(Ctrl + F2);

  • 程序继续运行,到下个断点所在的位置(F9);

  • 暂停程序;

  • 程序逐行运行(F8);

  • 进入调用的方法(F7);

  • 跳出调用的方法(Shift + F8);

  • 查看断点视图,可看到程序中所有设置的断点(Ctrl + Shift + F8);

  • 一键关闭所有断点;

更多功能点击最右侧的More可展开;

在这里插入图片描述

常用的功能说明如下:

  • Force Step Over:进入程序调用的JDK源码方法,如System.out.println()方法;

  • Force Stem Over:退出程序调用的JDK源码方法;

  • Run to Cursor:程序运行到光标所在的代码行(相当于在光标所在行打了一个断点,并使代码运行到这)

  • Evaluate Expression...:计算,可用于查看变量的值,计算表达式返回的结果;

以上功能,最常用的就是运行到下个断点计算,可以方便我们定位到BUG所在的代码行。

高级用法

用法1:卡住符合条件的断点

如下一个for循环,如果我们只想当 i == 5 时,才让断点卡住。

	for (int i = 0; i < 100; i++) {
	    System.out.println("i = " + i);
	}

我们可以在左侧的断点图标上,鼠标左键,设置断点卡住的条件,如下,可以看到只有当 i == 5 时,断点才卡住;

在这里插入图片描述

用法2:对Stream流打断点

Stream流,是使用流的方式对集合数据进行一系列操作的代码,表现出来就是一行如下的代码;

	// 创建一个字符数组
	String[] strings = {"a", "b", "cd", "efg"};
	
	// 使用stream流方式筛选出字符长度大于等于2的字符
	Arrays.stream(strings).filter(s -> s.length() >= 2).forEach(System.out::println);

接着,我们在这打一个断点,可看到如下选项:

在这里插入图片描述

分别表示:普通断点、Lambda表达式断点、综合以上的断点;

  • 普通断点:即程序允许至此停留,无法深入到Stream流内部;

  • Lambda表达式断点:针对Stream流中的表达式操作数据的过程拦截,如上,filter()方法相当于一个for循环,会依次拦截住每个元素;

  • 综合:综合以上;

对于Stream流的代码,我们可以使用上面的Lambda断点来查看代码执行的情况,另外可以在断点卡住后,在More里点击下面这个功能,Trace Current Stream Chain

在这里插入图片描述

它可以看到Stream流操作数据的每一个步骤的情况;

在这里插入图片描述

用法3:异常断点

当我们想要知道异常是哪一行代码抛出的,可点击下面的View Breakpoints,在左边的列表里新增一个异常断点,表示卡住抛出此异常的代码,方便我们找到异常代码;

在这里插入图片描述

Debug启动程序,此时没有打任何断点,IDEA会自动帮我们卡住抛出异常的代码;

在这里插入图片描述

当然,也可以设置自定义的异常(我没试过,大家可以试试看)。

方法4:观察变量值

可以对某个变量的值进行观察,如下,我们想对变量count的值进行观察,可以选中该变量,鼠标右键,选择Add to Watches

在这里插入图片描述

Debug启动程序,可在下面看到该变量的变化情况,还可以写计算表达式;

在这里插入图片描述

总结

本文介绍了2023.2版IDEA中Debug功能,参考B站UP主:不吃辣的Chris(视频:IDEA-Debug的多种使用方式提高排查效率

### Eclipse 中设置与 IDEA 类似的 Debug 配置 为了使 Eclipse 的调试体验尽可能接近于 IntelliJ IDEA,可以调整一些特定的选项和快捷键映射。 #### 调整快捷键配置 通过自定义快捷键来匹配 IDEA 的行为。这可以通过以下路径完成: 1. **访问首选项页面** - 使用菜单栏中的 `Window` -> `Preferences` 来打开偏好设置窗口。 2. **导航至快捷键管理界面** - 在左侧列表中选择 `General` -> `Keys` 以进入键盘绑定编辑器[^5]。 3. **更改常用命令的快捷方式** - 查找并重新分配如下几个重要命令对应的按键组合: - 单步执行 (Step Over): 将其更改为 `F6` - 步入方法内部 (Step Into): 更改为 `F5` - 继续直到下一个断点 (Resume/Continue to next breakpoint): 设置为 `F8` 这些改动使得开发者可以在 Eclipse 下获得类似于在 IDEA 中工作的感受。 #### 断点类型的同步 除了基本的单步调试外,还可以确保两种 IDE 对不同种类断点的支持一致。Eclipse 支持多种类型的断点,包括但不限于行级断点、条件断点以及异常捕获断点等。对于希望保持一致性的情况,建议启用所有可用的断点形式,并熟悉它们的功能差异。 ```java // 示例:创建一个简单的Java程序用于测试调试功能 public class TestDebugger { public static void main(String[] args) { int a = 1; System.out.println("Value of A is " + a); // 可在此处设置断点进行调试 String message = getMessage(); System.out.println(message); } private static String getMessage() { return "Hello from Debugger!"; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何中应

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值