Skip to content

IDEA 调试技巧

打印日志能解决问题,但效率低。断点调试可以逐行观察程序执行、查看变量值、追踪方法调用,快速定位问题根源。

快捷键速查

功能Windows/LinuxmacOS
设置断点Ctrl+F8Cmd+F8
开始调试Shift+F9Ctrl+D
单步跳过F8F8
单步进入F7F7
单步跳出Shift+F8Shift+F8
恢复执行F9Cmd+Alt+R
停止调试Ctrl+F2Cmd+F2

断点类型

行断点

在代码行号旁边点击,设置普通断点。程序运行到该行时暂停。

条件断点

在循环中断点处右键,设置条件,只在满足条件时暂停:

java
for (int i = 0; i < 1000; i++) {
    process(i);  // 只想在 i == 500 时暂停
}

设置方法:右键断点 → Conditions → 输入 i == 500

异常断点

在抛出特定异常时自动中断,无需手动设置断点。

设置方法:Ctrl+Shift+F8 → + → Java Exception Breakpoints → 输入异常类型如 NullPointerException

调试视图

区域内容
Frames方法调用栈
Variables当前作用域的变量值
Watches自定义监视表达式
Console程序输出

查看变量:基本类型直接显示值,对象可展开查看属性,数组显示长度和元素,集合显示元素列表。

实用技巧

条件断点

右键断点 → Conditions → 输入条件表达式。

Watch 变量

在 Variables 面板右键变量 → "Add to Watches",持续监控特定表达式的值。

评估表达式

Alt+F8 打开表达式计算器,可以在调试时执行任意表达式。

强制返回

在方法内设置断点,右键断点 → "Force Return",强制方法返回特定值。

断点命中次数

右键断点 → "More" → 设置 "Hit Count",只在循环第 N 次执行时暂停。

常见问题

断点无效,程序没有停下来?确保处于 Debug 模式(Shift+F9),不是 Run 模式;检查断点是否被禁用;确认断点所在代码路径被执行。

变量面板显示 "was muted"?变量在当前作用域不可见,可能是已出栈的局部变量。

后续可阅读:常见运行错误Java 程序运行机制Java 垃圾回收简介

基于 VitePress 构建