1. 断点
断点类型
行断点(圆形):可以执行的行上打断点,调试时会在该行停留
方法断点(菱形):在方法签名行打断点,调试时会在进入和退出该方法时停留,用于检查是否进入过该方法
属性断点(眼睛):在类的的属性上打断点,每次该属性值发生变化或被读取时停留,用于追踪一个属性值的变化情况
异常断点(闪电):在Breakpoints界面设置,发生异常会自动定位到异常发生处,用于发现程序中可能出现的某种异常
断点常见操作
1.打一个/删除断点:Ctrl + F8 或点击对应行编辑窗口空白
2.打开断点编辑窗口:Ctrl + Shift + F8 或再次点击编辑窗口空白
3.临时取消断点
你可以在装订线和Breakpoints界面取消单个断点,也可以在debug模式界面点击带斜杆的红色圆点图标禁用所有断点
4.移动和复制断点:用鼠标拖动到其他行实现移动,按住Ctrl拖动到其他行实现复制。
断点的属性

Enabled: 选中表示启用,不选中表示启用
Suspend:使用All的模式,所有进入代码的线程,都会依次卡在断点,如果不放行,任意一个线程都不进入到下一步。如果是Thread的模式,那么就会每个线程进行依次进行调试,依次进入各自的断点中。
Condition:设置断点条件,满足条件才会停留
Log:“Breakpoint hit” message: 断点命中日志;Stack trace:打印堆栈日志;Evaluate and log:任意表达式的日志
Remove once hit:命中后移除断点
Disable until hitting the following breakpoint:当指定的断点命中时禁用本断点
Filters:1. “Catch class filters”:只适用于异常断点,设置哪些类需要停留,哪些不需要停留;2.“Insert filters”:将断点操作限制为特定的对象实例。 这种类型的过滤器只在非静态上下文中生效。3.“Class filters”:将断点操作限制为特定类;4.“Caller filters”:根据当前方法的调用者限制断点操作。 选择是否仅在从某个方法调用(或不调用)当前方法时才需要在断点处停止。
Pass count:指定一个计数N,每当第N次经过该断点停留
Field access/modification:只适用于属性断点。Field access表示读取该属性时停留;Field modification表示属性被修改时停留。
Emulated:只适用于方法断点。启用此选项后,IntelliJ IDEA 在方法的第一个和最后一个语句处设置行断点组合,而不是使用较慢的“真”方法断点。 模拟方法断点提高了调试性能,因此默认使用。
Method entry/exit:只适用于方法断点。方法进入的时候停留,防法退出的时候停留,可以两个都选。
Caught/uncaught exception:只适用于异常断点。Caught Exception在有捕获异常的异常发生时停留,Uncaught Exception在没有捕获异常的场景发生异常时停留,至少选一个。
断点的状态
Verified(图标上有一个小勾):命中状态。当程序开启debug会话时,在断点被命中后,这时debugger会将其标记为Verified
Warning:
Invalid:不可用状态。当断点打在不可执行行,这个断点永远不会生效。
Inactive/Dependent:未激活状态。
Muted:静默状态,所有断点被暂时被禁用。
Disable:禁止状态。
Non-suspending:非停留状态。
断点图标
如下图,是断点的所有状态图标。