在DEBUG的时候,常常遇见这几种场景:
- 在一个断点中我只需要调试特定的场景/条件下的代码
- 发生异常时能够快速定位并暂停执行
- 在DEBUG时候,阅读到源码需要知道某个变量的值并且打印出来
1. 条件断点
在 IntelliJ IDEA 中,条件断点允许你在特定条件下暂停程序的执行,而不是每次执行到断点位置都暂停。这对于调试复杂的逻辑或循环非常有用
- 右键点击已经设置好的断点(红色圆圈),这会弹出一个菜单。
- 在弹出的对话框中,你会看到一个文本框标记为“Condition”。在这里输入你希望作为条件的布尔表达式。例如,如果你想仅当变量x大于10时暂停,你可以输入x > 10。
- 确保勾选了“Enabled”和“Suspend”选项,然后点击 “OK”。
这样只有当 x 的值大于10的时候才会进入到该断点
2. 异常断点
异常断点是一种非常有用的调试工具,它允许你在特定类型的异常被抛出时自动暂停程序的执行。这对于快速定位和修复异常问题特别有帮助。
- 右键断点选择“More”
- 点击左上角加号并选择 Java Exception Breakpoint
- 输入或者选择你感兴趣的异常类名。例如,如果你想在任何 NullPointerException 被抛出时暂停程序,就在这里输入 java.lang.NullPointerException。你也可以选择监听所有异常(包括子类),通过选择合适的选项实现。
- 设置是否在捕获的异常上也暂停(不仅仅是未捕获的异常)。在某些情况下,你可能只对未处理的异常感兴趣,而在其他情况下,你可能希望在每次异常发生时都暂停,无论它是否已经被捕获。
- 还可以指定条件、日志消息等高级选项,类似于普通断点的设置。还要选择禁用直到命中某个断点后再启用
3. 日志断点
日志断点是一种非常有用的调试技巧,它允许你在代码运行到特定位置时记录信息(例如变量的值)到控制台或日志文件中,而无需暂停程序的执行。这种方法在你想要监控某些变量或表达式的值变化而又不想中断程序正常流程的情况下特别有用
- 右键断点选择“More”
- 再断点中找到求值并记录
这样程序就在断点处执行你的语句并打印结果
4. 各种筛选器
- 实例筛选器(Instance Filters):
用于指定断点仅在特定实例上触发。
例如,如果你有一个类的多个实例,你可以选择只在某个特定实例上调停。 - 类筛选器(Class Filters):
用于指定断点仅在特定类或其子类中触发。
这对于处理继承关系复杂的类非常有用。 - 合格次数(Hit Count):
用于指定断点仅在满足特定调用次数时触发。
例如,你可以设置断点在第10次调用时暂停。 - 调用方筛选器(Caller Filters):
用于指定断点仅在特定方法被调用时触发。
这有助于在特定上下文中调试代码。