IDEA 断点使用(DeBug)

IDEA断点调试指南
本文详细介绍在IDEA中使用断点进行代码调试的方法,包括断点设置、基本调试操作及高级技巧,如条件断点的使用。

编写代码的时候,有时候我们需要跟踪代码的运行情况,使用断点调试就是一个不错的方法,接下来介绍一下如何在IDEA中使用断点进行调试

1. 设置断点

直接在你需要打断点的代码的行号区域,点击,即可设置断点,如图所示
在这里插入图片描述
这里补充一下对断点的理解:断点打在代码的前面,例如11行的断点打在第11行代码的前面,意味着,当程序运行到11行代码的断点时,第11行代码其实并未运行

2. 调试

点击绿色的三角形进行运行程序,点击绿色的小瓢虫就是运行调试程序
在这里插入图片描述

程序就会进入调试界面,代码行处的断点标记,都变成了红色的箭头,蓝色的部分表示现在程序所停的行数
最下面的就是调试窗口,调试窗口的左边部分是方法栈,即越下面的方法是越早被调用的,调试窗口的右边部分是变量的值
在这里插入图片描述

3. 调试的基本操作

3.1 step over

在这里插入图片描述
在调试窗口的上方,含义为:进入下一步,如果当前行断点是一个方法,则不进入当前方法体内。即从代码行A,跳到下一行代码A + 1,并执行原来A行代码
例如:
现在执行到第12行代码(12行未执行),当前的map里只有一个元素,我们可以在下面的Variables中确认只有一个元素
在这里插入图片描述
当我们点击step over时:第12行内容被执行,map的size变为2,程序来到第13行
在这里插入图片描述

3.2 step into 跟 Force step into

这两个都是表示:进入下一步,如果当前行断点是一个方法,则进入当前方法体内。但有一点区别,step into 只针对自定义的方法,如果对应的方法是官方库的方法,并不会进入方法体内。但Force step into,无论方法是什么方法,都会进入到方法体中
举例:
当执行到第15行,一个自定义的函数时:
在这里插入图片描述
使用 step into
在这里插入图片描述
则进入了该方法体内
在这里插入图片描述
但如果是这种官方库的方法,则无法进入:
在这里插入图片描述
此时,如果需要进入到方法体中,则需要使用Force step into:

这里进入到hashmap中
在这里插入图片描述

3.3 step out

跳出,即我们在方法体中运行时,不想继续一行一行的运行,想直接回到上一层的方法中,则使用step out跳出
如刚才上面的调试,我们进入到hashmap中:
在这里插入图片描述
使用:step out 跳出
在这里插入图片描述
在这里插入图片描述

3.4 resume program

恢复程序运行,如果该断点下面代码还有断点则停在下一个断点上,即从一个断点跳到另一个断点
在这里插入图片描述
例如:程序调试到13行,点击Resume Program,直接运行到下一个断点15行处才停止
在这里插入图片描述
执行后:
在这里插入图片描述

3.5 mute breakpoints

使得所有的断点失效 ,让所有断点失效,可以直接运行完剩余的程序
在这里插入图片描述

3.6 view breakpoints

查看所有断点的信息
在这里插入图片描述
查询结果:你可以看到自己设置的所有断点的信息:
在这里插入图片描述

3.6 条件断点

对断点是否停止进行条件判断,在断点处右键即可设置:
在这里插入图片描述
例如,如果我们这样子设置断点的话,我们调试的过程中,这段代码会停下来100次,如果我只想它在大于90的时候停止呢?
在这里插入图片描述
我们可以这样子,设置条件断点:
在这里插入图片描述
设置之后,断点处会加上“?”
在这里插入图片描述
进行调试时,停下的时候:
在这里插入图片描述

IDEADebug功能可用于追踪代码流程、确认运行过程中参数变化、分析定位程序的错误、线上问题追踪以及学习第三方框架等。其使用步骤如下: 1. **准备工作**:确保项目环境配置正确,代码可正常编译运行。在进行远程Debug时,本地代码必须与线上代码一致,且只能在线上测试环境使用,以免造成系统堵塞无法使用 [^2][^3][^4]。 2. **主界面介绍**:熟悉IDEADebug主界面,了解各功能区域的分布和作用。 3. **各功能键详解**:掌握Debug模式下各功能键的用途,如继续执行、单步执行、进入方法、跳出方法等。 4. **查看变量**:在Debug过程中,可以查看当前作用域内变量的值,帮助理解代码执行状态。 5. **更改变量值**:在某些情况下,可直接在Debug界面更改变量的值,以便测试不同的代码分支。 6. **设置断点条件**:可以为断点设置条件,只有当条件满足时,程序才会在该断点处暂停。 7. **计算表达式**:使用计算表达式功能,临时计算某个表达式的值,辅助调试。 8. **回退操作**:若想回退到之前的代码执行状态,可利用回退功能,避免重新发起请求。 9. **强制返回**:在特定情况下,可强制方法返回指定的值,改变代码执行流程。 10. **多线程调试**:当程序涉及多线程时,可进行多线程调试,观察各线程的执行情况。 11. **Stream调试**:对于Java 8及以上版本的Stream操作,可使用Stream调试功能,深入分析Stream的执行过程。 12. **远程Debug**:若要调试远程服务器上的应用程序,需进行相应的安装与配置,具体步骤包括配置远程服务器的调试参数,使本地IDE能够连接到远程应用进行调试 [^1]。 ### 代码示例 以下是一个简单的Java代码示例,可用于测试Debug功能: ```java public class DebugExample { public static void main(String[] args) { int a = 5; int b = 3; int result = add(a, b); System.out.println("结果是: " + result); } public static int add(int x, int y) { int sum = x + y; return sum; } } ``` 在`add`方法内部设置断点,然后以Debug模式运行程序,即可逐步调试代码,观察变量值的变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值