| name | systematic-debugging |
| description | 系统性调试。使用4阶段根因分析流程:收集证据、形成假设、验证假设、修复验证。用于排查 bug 或异常行为时。 |
系统性调试技能
遵循结构化的调试流程,避免盲目猜测。
核心原则
- 证据优先 - 基于日志和数据,不是直觉
- 一次一个变量 - 每次只改一个东西
- 记录过程 - 记录尝试过的方案
4阶段调试流程
阶段1: 收集证据
- 复现问题,记录精确步骤
- 收集相关日志和错误信息
- 确定问题首次出现的时间
- 检查最近的代码变更
输出清单:
阶段2: 形成假设
基于证据提出可能的原因:
- 列出所有可能的原因(至少3个)
- 按可能性排序
- 为每个假设设计验证方法
假设模板:
假设: [原因描述]
证据: [支持这个假设的证据]
验证方法: [如何证实或排除]
阶段3: 验证假设
从最可能的假设开始:
- 执行验证步骤
- 记录结果
- 确认或排除假设
- 如果排除,继续下一个假设
阶段4: 修复并验证
- 实施修复
- 验证原始问题已解决
- 确认没有引入新问题
- 添加防护测试
调试技巧
二分法
- 在问题发生的代码路径中间设置断点
- 判断问题在前半段还是后半段
- 重复直到定位到具体行
添加防御性日志
logger.debug(f"Function called with: {args}")
logger.debug(f"State before: {state}")
logger.debug(f"State after: {state}")