关于 debug
面向软件工程师的调试方法指南,包含 54 条规则,分为十个按影响排序的类别,涉及问题界定、假设调查、根因分析、验证和预防。
主要功能
- 01十类共 54 条规则
- 02问题界定与复现
- 03基于假设的调查
- 04观察与根因分析
- 05缺陷分类与修复验证
- 06预防与经验总结
适用场景
- 01调查软件的异常行为
- 02查找性能问题的原因
- 03分类并确定缺陷报告优先级
- 04验证修复并预防回归
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill debug安装后在 Claude Code 中输入/debug确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdreferences/_sections.mdanti-blame-tool.mdanti-debug-fatigue.mdanti-quick-patch.mdanti-shotgun-debugging.mdanti-tunnel-vision.mdhypo-binary-search.mdhypo-one-change-at-time.mdhypo-rubber-duck.mdhypo-rule-out-obvious.mdhypo-scientific-method.mdhypo-where-not-what.mdobs-breakpoint-strategy.mdobs-log-inputs-outputs.mdobs-stack-trace-reading.mdobs-strategic-logging.mdobs-trace-data-flow.mdobs-watch-expressions.mdpattern-async-await-errors.mdpattern-memory-leak.mdpattern-null-pointer.mdpattern-off-by-one.mdpattern-race-condition.mdpattern-timezone-issues.mdpattern-type-coercion.mdprev-defensive-coding.md详细介绍
dot-skills 调试最佳实践
为软件工程师提供的全面调试方法指南,包含 10 个类别中的 54 条规则,并按影响程度排序。内容基于 Andreas Zeller 的《Why Programs Fail》研究成果和学术调试课程。
适用场景
在以下情况下参考这些指南:
- 调查 Bug 或意外行为
- 在开发过程中调试代码
- 代码产生错误结果或发生崩溃
- 需要对性能问题进行根因分析
- 对收到的 Bug 报告进行分诊并确定修复优先级
- 对事故进行根因分析
- 审查调试方法或代码中的常见 Bug 模式
按优先级排列的规则类别
| 优先级 | 类别 | 影响 | 前缀 |
|---|---|---|---|
| 1 | 问题定义 | CRITICAL | prob- |
| 2 | 基于假设的搜索 | CRITICAL | hypo- |
| 3 | 观察技巧 | HIGH | obs- |
| 4 | 根因分析 | HIGH | rca- |
| 5 | 工具掌握 | MEDIUM-HIGH | tool- |
| 6 | Bug 分诊与分类 | MEDIUM | triage- |
| 7 | 常见 Bug 模式 | MEDIUM | pattern- |
| 8 | 修复验证 | MEDIUM | verify- |
| 9 | 反模式 | MEDIUM | anti- |
| 10 | 预防与学习 | LOW-MEDIUM | prev- |
快速参考
1. 问题定义(CRITICAL)
prob-reproduce-before-debug- 调查前先复现 Bugprob-minimal-reproduction- 创建最小复现用例prob-document-symptoms- 准确记录症状prob-separate-symptoms-causes- 区分症状与原因prob-state-expected-actual- 说明预期行为与实际行为prob-recent-changes- 优先检查近期变更
2. 基于假设的搜索(CRITICAL)
hypo-scientific-method- 运用科学方法hypo-binary-search- 使用二分搜索定位 Bughypo-one-change-at-time- 每次只验证一个假设hypo-where-not-what- 先找到发生位置,再询问原因hypo-rule-out-obvious- 先排除明显原因hypo-rubber-duck- 大声讲述问题
3. 观察技巧(HIGH)
obs-strategic-logging- 有策略地使用日志obs-log-inputs-outputs- 记录函数的输入和输出obs-breakpoint-strategy- 有策略地使用断点obs-stack-trace-reading- 从下往上阅读堆栈跟踪obs-watch-expressions- 使用监视表达式查看状态obs-trace-data-flow- 跟踪系统中的数据流
4. 根因分析(HIGH)
rca-five-whys- 使用 5 Whys 技巧rca-fault-propagation- 跟踪故障传播链rca-last-known-good- 找到最后一个已知正常状态rca-question-assumptions- 质疑自己的假设rca-examine-boundaries- 检查系统边界
5. 工具掌握(MEDIUM-HIGH)
tool-conditional-breakpoints- 使用条件断点tool-logpoints- 使用日志点,而非修改代码tool-step-commands- 熟练使用逐过程、逐语句和跳出命令tool-call-stack-navigation- 浏览调用堆栈tool-memory-inspection- 检查内存和对象状态tool-exception-breakpoints- 使用异常断点
6. Bug 分诊与分类(MEDIUM)
triage-severity-vs-priority- 区分严重程度与优先级triage-user-impact-assessment- 确定优先级前评估用户影响triage-reproducibility-matters- 在分诊时考虑可复现性triage-quick-wins-first- 优先找出并交付易于完成的改进triage-duplicate-detection- 检测并关联重复的 Bug 报告
7. 常见 Bug 模式(中)
pattern-null-pointer- 识别空指针模式pattern-off-by-one- 发现差一错误pattern-race-condition- 识别竞态条件症状pattern-memory-leak- 检测内存泄漏模式pattern-type-coercion- 留意类型强制转换 Bugpattern-async-await-errors- 捕获 async/await 错误处理中的问题pattern-timezone-issues- 识别时区和日期 Bug
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- 记录 Bug 解决方案prev-postmortem- 开展无责复盘prev-defensive-coding- 在边界处添加防御性代码prev-improve-error-messages- 改进错误消息
使用方法
阅读各个参考文件,了解详细说明和代码示例:
- 章节定义 - 类别结构和影响级别
- 规则模板 - 添加新规则的模板
- 规则示例:prob-reproduce-before-debug、hypo-binary-search
完整编译文档
如需查看包含所有详细规则的完整指南:AGENTS.md
评论
支持 Markdown