设置断点——让程序在关键位置停下来
断点是什么
断点就是一个"停车标志"。告诉调试器:程序执行到这一行时,停下来,等我看看情况。
如何设置
在代码编辑器左侧的行号区域,点击你想停住的那一行:
- 点击 → 出现一个红色圆点(断点已设置)
- 再点一次 → 圆点消失(取消断点)
断点生效的前提
- 项目是 Android Java App 或 Java Console App(PhoneGap/NDK 不支持)
- 用 Debug 而不是 Run 启动应用
- 程序的执行路径确实会经过这行代码
调试启动后的行为
- 点 Debug 启动应用
- 应用正常运行(看起来和 Run 一样)
- 当执行流到达第一个断点时:
- 应用暂停(屏幕可能短暂停一下)
- AIDE 切换到调试视图
- 编辑器高亮显示当前暂停的行
- 右侧面板显示当前变量状态
可以设置断点的位置
| 位置 | 是否支持 | 说明 |
|---|---|---|
| Java 方法内 | ✅ | 最常用 |
| 匿名内部类 | ✅ | |
| Lambda 表达式 | ✅ | |
| XML 文件 | ❌ | XML 是布局定义,没有可执行代码 |
| PhoneGap HTML | ❌ | PhoneGap JS 需用浏览器调试 |
| C/C++ NDK | ❌ | 不支持 |
断点失效的常见原因
断点上有灰色斜线
AIDE 提示这个断点无效,常见原因:
- 这行是空行或只有大括号
- 这行代码不在可执行路径上(比如 if (false) 里的代码)
- 编译产物和源码对不上(修改代码后没重新 Debug)
设置了断点但程序不停
- 是不是用了 Run 而不是 Debug
- 执行路径有没有可能跳过这个断点
- 多线程环境 — 断点设在子线程里,主线程不会触发
- 调试的代码不是最新版本 — 先 Clean/Rebuild 再 Debug
断点组合拳
实际调试中很少只设一个断点,通常的套路是:
- 入口断点 — 在 Activity.onCreate() 或 main() 第一行设断点
- 中间断点 — 在你怀疑有问题的关键逻辑处设断点
- 错误点断点 — 在可能抛异常的代码处设断点
- 运行到入口 → 单步走 → 走到中间 → 检查变量 → 继续单步 → 走到错误点