name: debug description: 用于查找和修复错误的全面调试方法(原为调试)。此技能应在调试代码、调查错误、解决问题、进行根因分析或响应事故时使用。涵盖系统重现、假设驱动调查和根因分析技术。当遇到异常、堆栈跟踪、崩溃、段错误、未定义行为或需要调查错误报告时使用。
dot-skills 调试最佳实践
软件工程师的全面调试方法指南,包含 54 条规则,分为 10 个类别,按影响优先级排序。基于 Andreas Zeller 的“为什么程序会失败”研究和学术调试课程。
何时应用
在以下情况下参考这些指南:
- 调查错误或意外行为时
- 在开发过程中调试代码时
- 代码产生错误结果或崩溃时
- 性能问题需要根因分析时
- 分诊传入的错误报告并优先修复时
- 为事故进行根因分析时
- 审查调试方法或代码中的常见错误模式时
规则类别按优先级
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 问题定义 | 关键 | prob- |
| 2 | 假设驱动搜索 | 关键 | hypo- |
| 3 | 观察技术 | 高 | obs- |
| 4 | 根因分析 | 高 | rca- |
| 5 | 工具掌握 | 中高 | tool- |
| 6 | 错误分诊和分类 | 中 | triage- |
| 7 | 常见错误模式 | 中 | pattern- |
| 8 | 修复验证 | 中 | verify- |
| 9 | 反模式 | 中 | anti- |
| 10 | 预防与学习 | 低中 | prev- |
快速参考
1. 问题定义(关键)
prob-reproduce-before-debug- 在调查前重现错误prob-minimal-reproduction- 创建最小重现案例prob-document-symptoms- 精确记录症状prob-separate-symptoms-causes- 区分症状和原因prob-state-expected-actual- 说明期望与实际行为prob-recent-changes- 首先检查最近更改
2. 假设驱动搜索(关键)
hypo-scientific-method- 应用科学方法hypo-binary-search- 使用二分搜索定位错误hypo-one-change-at-time- 一次测试一个假设hypo-where-not-what- 先找到 WHERE 再问 WHAThypo-rule-out-obvious- 先排除明显原因hypo-rubber-duck- 大声解释问题
3. 观察技术(高)
obs-strategic-logging- 使用战略日志记录obs-log-inputs-outputs- 记录函数输入和输出obs-breakpoint-strategy- 战略性地使用断点obs-stack-trace-reading- 从底向上读取堆栈跟踪obs-watch-expressions- 使用监视表达式查看状态obs-trace-data-flow- 追踪系统数据流
4. 根因分析(高)
rca-five-whys- 使用 5 个为什么技术rca-fault-propagation- 追踪故障传播链rca-last-known-good- 找到最后已知良好状态rca-question-assumptions- 质疑您的假设rca-examine-boundaries- 检查系统边界
5. 工具掌握(中高)
tool-conditional-breakpoints- 使用条件断点tool-logpoints- 使用日志点而不是修改代码tool-step-commands- 掌握单步执行/进入/跳出tool-call-stack-navigation- 导航调用堆栈tool-memory-inspection- 检查内存和对象状态tool-exception-breakpoints- 使用异常断点
6. 错误分诊和分类(中)
triage-severity-vs-priority- 区分严重性和优先级triage-user-impact-assessment- 在优先排序前评估用户影响triage-reproducibility-matters- 将可重现性纳入分诊triage-quick-wins-first- 首先识别并交付快速胜利triage-duplicate-detection- 检测并链接重复的错误报告
7. 常见错误模式(中)
pattern-null-pointer- 识别空指针模式pattern-off-by-one- 发现差一错误pattern-race-condition- 识别竞态条件症状pattern-memory-leak- 检测内存泄漏模式pattern-type-coercion- 注意类型转换错误pattern-async-await-errors- 捕获异步/等待错误处理错误pattern-timezone-issues- 识别时区和日期错误
8. 修复验证(中)
verify-reproduce-fix- 使用原始重现验证修复verify-regression-check- 检查回归verify-understand-why-fix-works- 理解为什么修复有效verify-add-test- 添加测试以防止再次发生
9. 反模式(中)
anti-shotgun-debugging- 避免散弹调试anti-quick-patch- 避免未理解的快速补丁anti-tunnel-vision- 避免对初始假设的隧道视觉anti-debug-fatigue- 识别调试疲劳anti-blame-tool- 不要过早责备工具
10. 预防与学习(低中)
prev-document-solution- 记录错误解决方案prev-postmortem- 进行无责事后分析prev-defensive-coding- 在边界处添加防御性代码prev-improve-error-messages- 改进错误消息
如何使用
阅读个别参考文件以获取详细解释和代码示例:
- 部分定义 - 类别结构和影响级别
- 规则模板 - 添加新规则的模板
- 示例规则: prob-reproduce-before-debug, hypo-binary-search
完整编译文档
有关所有规则扩展的完整指南: AGENTS.md