一 说明
1️⃣ Alt + 鼠标左键
👉 核心用途:快速多光标 / 快速修改表达式
常见用法
kotlin
val a = foo()
val b = foo()
val c = foo()
Alt + 左键 点三次 foo():
kotlin
val a = foo()
val b = foo()
val c = foo()
→ 一次性改 / 包裹 / 重命名
和 Debug 的关系(关键)
- 在 Evaluate Expression
- 在 Condition
- 在 Log message
👉 快速构造复杂条件 / 日志模板
老手在写条件断点时,几乎离不开这个。
2️⃣ Ctrl + Shift + F8(断点总控中心 ⭐⭐⭐)
👉 打开 Breakpoints 管理器
Ctrl + Shift + F8 (Windows / Linux)
⌘ + Shift + F8 (macOS)
在这里干什么?
- 查看 所有断点
- 启用 / 禁用(不删除)
- 批量操作
- 管理 Exception / Field / Method 断点
👉 这是断点的"控制台"
3️⃣ 一键 Mute Breakpoints(神技)
按钮位置
- Debug 工具栏里的 🔇 图标
效果
- 所有断点瞬间失效
- 不会删除
- 再点一次全部恢复
什么时候用?
- 你想 让程序跑完整流程
- 又不想删掉辛苦打的断点
- 验证「断点是否影响时序」
👉 这是调试老兵最常用的按钮之一
二、这些技巧为什么重要?(不是炫技)
因为你已经遇到过这种场景:
"我打了断点,Bug 不复现了"
原因往往是:
- 线程被 suspend
- 协程时序被打断
- Media / 播放状态被改变
👉 Mute 是验证时序的唯一低成本手段
三、再补一定在用、但可能没系统总结过的
4️⃣ 条件断点里最该会的 3 个技巧
① 条件里可以写 任意 Kotlin 表达式
kotlin
savedPosition > 0 && trackIdToPlay == null
② 条件支持方法调用(谨慎)
kotlin
songList.any { it.id() == savedId }
⚠️ 有副作用的方法别写
③ 条件断点 + 不 Suspend(日志断点)
✔ Suspend 取消
✔ Log message 勾选
text
[Restore] hit id={savedId}, listSize={songList.size}
👉 比 Log.d 干净太多
5️⃣ Inline Evaluate(断点时的"手术刀")
断点停住时:
- 选中变量 / 表达式
Alt + F8
👉 立刻查看结果
比如:
kotlin
songList.map { it.id() }
6️⃣ 选择一行代码,让断点直接到这一行
快捷键
Alt + F9
用法
- 光标放在目标行
- 不用打断点,直接跑到那
👉 快速跳过无关代码
7️⃣ Temporary Breakpoint(一次性断点)
快捷键
Ctrl + Alt + Shift + F8
- 命中一次后自动删除
👉 用来验证"只会发生一次的情况"