name: systematic-debug description: 系统化调试技能 - 按证据驱动流程定位和修复bug
系统化调试技能
当用户描述一个 bug 或异常行为时,按以下流程执行:
第一步:收集证据
- 让用户描述:预期行为 vs 实际行为
- 收集错误日志、堆栈跟踪、截图
- 确认复现条件(设备/操作步骤/频率)
- 用
grep_search在代码中搜索相关错误信息和关键字
第二步:缩小范围
- 根据错误信息定位到具体文件和函数
- 用
view_code_item阅读相关代码,理解调用链 - 画出调用链路:入口 → 中间层 → 出错点
- 识别可能的竞态条件、空值、类型错误
第三步:提出假设
- 列出 2-3 个最可能的根因假设
- 为每个假设说明:
- 为什么认为这是原因
- 如何验证/排除
- 按可能性排序
第四步:验证假设
- 添加日志语句验证假设(标记为
// DEBUG-TEMP) - 阅读相关测试文件,检查是否有覆盖
- 对比类似功能的正常实现(如果有)
- 如果项目有其他参考实现(如 nekobox),对比关键差异
第五步:实施修复
- 编写最小化修复(不要过度重构)
- 所有修改标注
// fix: [issue描述]注释 - 确保修复不引入新问题(检查调用方)
- 清理第四步添加的
// DEBUG-TEMP日志
第六步:验证修复
- 运行编译确认无语法错误
- 运行现有测试(如果有)
- 列出手动测试步骤让用户验证
- 检查边界情况和并发场景
注意事项
- 不要猜测:每一步都要基于代码证据
- 不要过度修复:只修改导致 bug 的代码,不要顺便重构
- 保留上下文:在 walkthrough 中记录发现和修复过程
- Android 特别注意:多进程通信、生命周期、主线程阻塞