调试是开发过程中不可或缺的环节,掌握高级调试技巧可以显著提高问题排查效率。本文将深入讲解Java调试中的两个核心技巧:条件断点设置和表达式求值,帮助您更快定位和解决复杂问题。
一、条件断点(Conditional Breakpoints)
1.1 什么是条件断点?
条件断点是只有满足特定条件时才会触发的断点,避免了在循环或高频调用方法中需要手动跳过大量无关断点的情况。
1.2 设置条件断点(IntelliJ IDEA)
-
普通断点设置:
- 点击行号旁边的空白处添加断点(红色圆点)
-
添加条件:
- 右键点击断点 → 选择"Condition"
- 输入布尔表达式(如
i > 5
) - 勾选"Suspend when ‘true’"(条件为真时暂停)
1.3 实际应用场景
场景1:循环中的特定迭代
for (int i = 0; i < 100; i++) {
process(i); // 只想在i=50时中断
}
设置条件:i == 50
场景2:特定对象状态
void handleUser(User user) {
// 只想在user.getName().equals("admin")时中断
user.doSomething();
}
设置条件:"admin".equals(user.getName())
场景3:集合内容检查
list.forEach(item -> {
process(item); // 只想在特定item属性时中断
});
设置条件:item.getId() == 12345
1.4 条件断点类型
类型 | 说明 | 示例 |
---|---|---|
布尔条件 | 简单true/false判断 | count > 10 |
对象属性 | 检查对象状态 | user.isActive() |
日志断点 | 不暂停只记录 | 勾选"Log message" |
计数断点 | 第N次命中时暂停 | 设置"Count"=5 |
二、表达式求值(Expression Evaluation)
2.1 调试时求值功能
在调试暂停状态下,可以动态计算和查看表达式的值,无需修改代码或添加临时变量。
2.2 基本使用方法(IntelliJ IDEA)
-
方式一:快速查看
- 光标悬停在变量上(基本类型直接显示)
- 对于复杂对象,点击展开查看字段
-
方式二:表达式求值窗口
- 调试暂停时,点击"Evaluate Expression"按钮(Alt+F8)
- 输入任意合法Java表达式
- 点击"Evaluate"查看结果
-
方式三:代码片段执行