欲善其事,必利其器
目录
一、 写在前面
1.1 什么是断点
断点(英语:Breakpoint)是程序中为了调试而故意停止或者暂停的地方。
调试设置断点可以让程序运行到该行程序时停住,借此观察程序到断点位置时,其变量、寄存器、I/O等相关的变量内容,有助于深入了解程序运作的机制,发现、排除程序错误的根源。
IDEA中一旦设置,断点将保留在项目中,直到被移除。断点只能在可执行的代码行上设置,注释、字段或方法的声明以及空行都不是断点的有效位置。
1.2 为什么要学断点调试
- 调试是一个程序员最最最基础的技能。
- 调试的时间也许比你编码的时间还要多。
- 调试技能重要性甚⾄超过学习⼀门语⾔。
- 不会调试的程序员,肯定不是一个合格的程序员。
本文主要发力讲述IDEA调试的相关技能技巧,希望对你能有所帮助。
二、断点的类型
我发现大部分的小伙伴只会用代码行左边鼠标单击这种最基础的方式打断点(即行断点)。
划重点: 调试IDEA给我们提供了丰富的断点类型,让我们能够在不同的调试场景下,使用不同的断点类型来大大提高我们的调试效率。
首先先了解下断点对话框,先有个直观的印象,你可以通过快捷键ctrl+shift+F8或菜单run-view breakpoints查看,也可以参见三、按钮介绍的S-5内容。里面涉及到的内容后面会详细讲解。
2.1 行断点
我们最常用的,在每一行前面点一下,出现一个小圆点,这个就是行断点。这些断点被分配到源代码行,并用于针对特定的部分进行调试。
临时行断点
创建方法同上,和上面的唯一区别是:把Remove once hit这个复选框给勾选上(此类型断点其实使用较少)。
这些断点被分配到源代码行,并用于针对特定的部分进行调试。命中时,这些断点将立即被移除。
应用场景举例
太多了,不说了
2.2 字段断点
可以设置在字段上,这样读写字段都可以触发。需要注意的是,默认只有写才会停下,想要让读取时也停下,需要右击断点,在Watch的Field access上打勾才行。
应用场景举例
如果在一个复杂的过程结束时,您的某个字段的结果显然是错误的值,那么设置字段点可能是确定故障来源的最快方法。
2.3 方法断点
打断点方式同上,只是它是必须把断点打在方法那一行上。方法断点可以按照方法级别跟踪程序流以及检查输入和退出条件。
它有三个特定的参数
- Watch:
- “Method entry”:进入方法时激活断点
- “Method exit”:出去方法时激