断点的概念

debug模式离不开断点(breakpoint),断点是能够程序中断执行的点

设置断点后,当程序以debug模式运行时,就可以利用断点来使程序在某个地方暂停执行,方便开发人员调试和排错

当以debug模式运行程序时,会停在第一个断点所在行(该行还没有被执行!)

如何添加或设置一个断点

直接在想要打断点的行的行号区域单击即可(也可以使用快捷键Ctrl+F8)

断点可以在debug过程中动态设置哦

断点的分类

断点 描述
源断点 黄色圆点,可以直接设置断点属性(Shift+单击)
行断点 是最常用、最普遍的断点
方法断点 在方法执行前和执行完毕处各打一个断点
字段断点 监控某个字段(属性)值的变化
异常断点 在程序出现指定异常时,引发异常的行打一个断点

断点调试按钮/命令

先认识一下debug断点调试面板:

20230120201805

单步调试

序号 按钮 描述
1 step over 程序向下执行一行(如果当前行有方法调用,这个方法将被执行完毕返回,然后到下一行)
2 step into 程序向下执行一行(如果该行有自定义方法的调用,则运行进入自定义方法,注意不会进入JDK官方类库的方法)
3 force step into 程序向下执行一行(如果当前行有方法调用,则强制进入该方法中,无论该方法是自定义方法还是JDK类库中的方法)
4 step out 跳出当前方法,返回到方法调用处的下一行(该方法将会被执行完毕)
5 run to cursor 回到当前断点并继续执行到下一个断点处。有的说是运行到光标所在处
5 evaluate expression 计算表达式的值,实际表现为给一个方法传参,然后获取返回值
6 drop frame 回退到当前方法调用行
7 show excution point 回到执行到的断点处

实际测试发现,当前行有方法调用,并且调用的方法中设置了断点,step over命令也会进入到方法体内断点处。(很简单,因为方法体内有断点,step over就无法一步执行完方法调用了)

多步调试

序号 按钮 描述
1 rerun 重新以debug模式运行程序
2 modify run configuration debug运行设置
3 resume program (恢复程序)运行程序到下一个断点
4 pause program 暂停程序,一般不会用到
5 stop 停止debug程序的运行
6 view breakpoints 查看当前程序设置的所有断点,进一步地,可以设置断点出现的条件等断点属性
7 mute breakpoints 使所有断点失效,再次单击可使所有断点生效(当你某次debug程序程序却直接运行完毕,而又确实设置了断点时,检查这个按钮)

多线程断点调试

利用断点调试,我们可以控制多个线程的执行顺序

断点调试拓展

条件断点
条件断点只有在满足某个条件时才会生效

Variables:在变量区可以查看当前断点之前的当前方法内的变量。

其他

IDEA插件推荐

  1. GsonFormat:根据json格式的数据自动生成实体类中的属性及对应的setter、getter方法(快捷键alt+S)

  2. Free MyBatis Plugins:针对mybatis框架,完成Mapper接口和对应Mapper.xml之间的快速跳转

  3. RestfulTool:俗称插件版Postman,对Controller层接口进行管理,发送请求,获得响应数据等

  4. SequenceDiagram:以图形化的形式展示某个方法的调用栈,方便开发者梳理业务逻辑