系统调试Skill debugging

系统化调试技能,专注于识别软件错误的根本原因,使用结构化方法如顺序思维和网络搜索,避免循环推理等反模式,提高修复效率和准确性。关键词:调试、根因分析、错误修复、软件测试、系统化方法、结构化调查。

测试 0 次安装 0 次浏览 更新于 3/9/2026

名称: 调试 描述: 系统化调试,识别根本原因而非治疗症状。使用顺序思维进行复杂分析,网络搜索进行研究,以及结构化调查,以避免循环推理和打地鼠式修复。

调试

快速入门

  1. 捕获确切重现步骤、范围和最近更改
  2. 隔离组件/文件;追踪失败路径
  3. 研究具体错误;检查官方文档
  4. 比较失败与工作模式;形成可测试假设
  5. 使用最小测试验证;跨所有实例应用最小修复;验证

何时使用此技能

在以下情况下使用调试:

  • 错误没有明显原因或之前被“修复”但返回
  • 错误消息不清晰或误导性
  • 多次尝试修复失败
  • 问题可能影响代码库中的多个位置
  • 理解根本原因对正确解决至关重要

跳过此技能用于:

  • 具有明显修复的简单语法错误
  • 琐碎的拼写错误或缺失导入
  • 理解清楚、孤立且有明确解决方案的错误

核心反模式避免

基于AI调试中记录的失败,明确避免:

  1. 循环推理:不要在未了解失败原因的情况下两次提出相同修复
  2. 过早胜利:始终验证修复是否实际实施并工作
  3. 模式遗忘:在整个会话中保持对已建立代码模式的意识
  4. 上下文过载:使用50%规则 - 当上下文达到50%时重新开始对话
  5. 症状追逐:抵制在不理解根本原因的情况下修复错误消息
  6. 理解前实施:在检查现有模式之前不要跳转到代码更改

UNDERSTAND(10步检查清单)

  • 理解:捕获确切重现步骤、范围和最近更改
  • 缩小:隔离组件/文件;追踪失败路径
  • 发现:研究具体错误(WebSearch → Parallel Search, Context7:get-library-docs)
  • 检查:与代码库中已知良好模式比较
  • 推理:使用SequentialThinking:process_thought和5个为什么达到根本原因
  • 综合:编写可证伪的假设和预测
  • 测试:添加日志/测试以确认机制
  • 应用:针对根本原因的最小修复,跨所有实例,遵循模式
  • 记录:记录洞察、警告、决策
  • 文档:根据需要更新注释/文档/测试

使用TodoWrite进行进度跟踪

使用TodoWrite通过UNDERSTAND检查清单跟踪调试进度:

  1. 开始时:为每个适用步骤创建待办事项:

    ☐ U - 捕获确切重现步骤和范围
    ☐ N - 隔离失败组件
    ☐ D - 研究错误消息
    ☐ E - 与工作模式比较
    ☐ R - 根本原因分析(5个为什么)
    ☐ S - 编写可证伪的假设
    ☐ T - 使用最小测试验证
    ☐ A - 跨所有实例应用修复
    ☐ N - 记录洞察
    ☐ D - 更新文档/测试
    
  2. 调试期间:标记步骤为进行中 → 完成

  3. 卡住时:TodoWrite使哪个步骤被阻塞可见 - 帮助识别是否跳过步骤或循环

  4. 仅在以下情况跳过步骤:错误足够简单,检查清单是多余的(参见上面的“跳过此技能用于”)

工具决策树

  • 知道确切文本/符号? → grep
  • 需要概念/语义位置? → codebase_search
  • 需要完整文件上下文? → read_file
  • 不熟悉的错误/行为? → Context7:get-library-docs,然后WebSearch → Parallel Search
  • 复杂多假设分析? → SequentialThinking:process_thought

上下文管理

  • 在约50%上下文使用时重新开始以避免降级推理
  • 重新开始前:总结事实、假设、排除项、下一步
  • 开始一个新对话仅包含该摘要;继续

决策框架

如果相同修复被提出两次 → 停止;使用SequentialThinking:process_thought 如果错误不清晰 → 通过WebSearch → Parallel Search研究;用文档验证 如果区域不熟悉 → 使用codebase_search探索;不要猜测 如果修复看起来太容易 → 确认它解决根本原因(不是症状) 如果上下文混乱 → 使用摘要在50%时重新开始 如果多个假设存在 → 明确评估(证据支持/反对) 如果类似代码工作 → 通过codebase_search/read_file查找和差异 如果宣布成功 → 显示更改的行;测试修复前失败/修复后通过 如果修复跨多个文件 → 搜索并修补所有实例 如果假设库行为 → 检查Context7:get-library-docs

完成前质量检查

在宣布错误修复前,验证:

  • [ ] 根本原因已识别并记录
  • [ ] 修复解决原因,不是症状
  • [ ] 所有实例已修复(项目范围搜索)
  • [ ] 遵循现有代码模式
  • [ ] 原始症状已消除
  • [ ] 未引入回归
  • [ ] 测试/日志在相关条件下验证
  • [ ] 文档/测试已更新(注释、文档、回归测试)

参考文献

  • reference/root-cause-framework.md
  • reference/antipatterns.md