debug-methodical
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseDebug-Methodical — Debugging en 4 phases
Debug-Methodical — 四阶段系统化调试
Skill inspiré de obra/superpowers. Objectif : forcer une méthode rigoureuse au lieu de "try random fixes until it works".
Règle d'or : un bug sans reproduction stable est un bug mal compris. Ne JAMAIS fixer avant de reproduire.
本Skill灵感来自obra/superpowers。目标: 强制采用严谨的方法,而非“随机尝试修复直到生效”。
黄金法则: 无法稳定重现的bug就是未被理解的bug。绝对不要在重现之前进行修复。
Les 4 phases (strictes, dans l'ordre)
四个严格阶段(按顺序)
Phase 1 : REPRODUCE
阶段1:重现(REPRODUCE)
Objectif : exécuter le bug à volonté, dans un environnement contrôlé.
Checklist :
- Étapes de reproduction documentées (Given/When/Then)
- Reproduction déterministe (>= 3 runs consécutifs identiques)
- Environnement isolé (local, container, test env)
- Inputs minimaux (le moins de données/steps possible)
- Version/commit exacts identifiés
Sortie : test automatisé qui échoue en exposant le bug (test de régression).
Signal rouge : "ça marche sur ma machine" / "parfois ça fail" → reproduction insuffisante, retour Phase 1.
目标: 在受控环境中按需触发bug。
检查清单:
- 记录重现步骤(Given/When/Then格式)
- 可确定性重现(连续≥3次运行结果一致)
- 隔离环境(本地、容器、测试环境)
- 最小化输入(尽可能少的数据/步骤)
- 确定确切版本/提交记录
输出: 一个能暴露bug的自动化测试用例(回归测试),且该测试当前会失败。
危险信号: “在我机器上正常” / “偶尔失败” → 重现不充分,返回阶段1。
Phase 2 : ISOLATE
阶段2:隔离(ISOLATE)
Objectif : identifier la cause racine, pas juste un symptôme.
Techniques :
- Bisect : pour trouver le commit fautif
git bisect - Binary search dans le code : commenter la moitié, puis itérer
- Print-driven debugging : logs aux frontières (entrée/sortie fonctions)
- Debugger : breakpoints, step-through, variable watch
- Diff environnements : que diffère-t-il entre "qui marche" et "qui casse" ?
- Question the premise : l'hypothèse initiale est-elle correcte ?
Checklist :
- Cause identifiée (ligne / condition / input exact)
- Explication du pourquoi (pas juste le quoi)
- Chaîne de causalité documentée (A cause B cause C)
- Autres manifestations potentielles du même bug identifiées
Signal rouge : "je pense que c'est X" sans preuve → retour isolate avec instrumentation.
目标: 识别根本原因,而非仅仅是症状。
技巧:
- 二分法:使用定位有问题的提交
git bisect - 代码二分搜索:注释一半代码,逐步迭代
- 打印驱动调试:在函数边界处添加日志(输入/输出)
- 调试器:断点、单步执行、变量监控
- 环境对比:“正常环境”和“故障环境”之间有哪些差异?
- 质疑前提:初始假设是否正确?
检查清单:
- 已确定原因(确切代码行/条件/输入)
- 解释为什么会发生(而非仅仅是发生了什么)
- 记录因果链(A导致B导致C)
- 识别同一bug可能的其他表现形式
危险信号: “我觉得是X”但无证据 → 返回隔离阶段,添加监测手段。
Phase 3 : FIX
阶段3:修复(FIX)
Objectif : corriger la cause racine avec le minimum de changement.
Checklist :
- Fix au bon niveau (cause racine, pas symptôme)
- Changement minimal (KISS, voir rule 05)
- Pas d'effet de bord sur autres features
- Pas de fix "au cas où" / spéculatif (voir rule 23 Karpathy)
- Fix dans le bon layer (domain / infra / UI)
Signaux rouges :
- Fix qui ajoute un pour masquer l'erreur → traite le symptôme, pas la cause
try/catch - Fix qui nécessite de modifier les tests existants de façon suspecte
- Fix qui "marche" sans que tu saches pourquoi
目标: 以最小改动修复根本原因。
检查清单:
- 在正确层级修复(针对根本原因,而非症状)
- 最小化改动(遵循KISS原则,参见规则05)
- 不对其他功能产生副作用
- 不做“以防万一”的推测性修复(参见Karpathy规则23)
- 在正确层级修复(领域层/基础设施层/UI层)
危险信号:
- 添加来掩盖错误的修复 → 仅处理了症状,而非原因
try/catch - 修复需要可疑地修改现有测试用例
- 修复“生效”但你不知道为什么
Phase 4 : VERIFY
阶段4:验证(VERIFY)
Objectif : prouver que le fix marche ET n'a rien cassé d'autre.
Checklist :
- Test de régression (Phase 1) passe maintenant
- Suite de tests complète passe
- Reproduction manuelle ne montre plus le bug
- Scénarios adjacents testés (edge cases proches)
- Performance non dégradée
- Logs / monitoring vérifiés en staging si critique
Règle de régression : le test écrit en Phase 1 reste dans la codebase pour toujours. Un bug fixé ne doit JAMAIS réapparaître (voir ).
/qa:regression目标: 证明修复有效且未破坏其他功能。
检查清单:
- 阶段1编写的回归测试现在可以通过
- 完整测试套件全部通过
- 手动重现不再出现bug
- 测试了相邻场景(相近边缘案例)
- 性能未下降
- 若为关键问题,已验证预发布环境的日志/监控
回归规则: 阶段1编写的测试用例需永久保留在代码库中。已修复的bug绝对不能再次出现(参见)。
/qa:regressionAnti-patterns critiques
关键反模式
| Anti-pattern | Pourquoi c'est mal |
|---|---|
| Shotgun debugging | Changer 10 trucs au hasard, aucun apprentissage |
| Fix du symptôme | Bug revient sous une autre forme |
| Skip reproduction | Fix impossible à valider |
| Skip verification | "ça devrait marcher" — preuve ou pas fini |
| Pas de test de régression | Bug réapparaît dans 3 mois |
Fix avec | Masque d'autres bugs |
| Commit mélangé fix + refactor | |
| 反模式 | 危害 |
|---|---|
| 霰弹式调试 | 随机修改多处内容,无法从中学习 |
| 症状修复 | bug会以其他形式重现 |
| 跳过重现步骤 | 无法验证修复效果 |
| 跳过验证步骤 | “应该会生效”——没有证据就不算完成 |
| 不添加回归测试 | bug会在3个月后重现 |
使用 | 会掩盖其他bug |
| 修复与重构混合提交 | 无法使用 |
Techniques avancées
高级技巧
Pour bugs de concurrence
并发bug排查
- Forcer les interleavings (sleep stratégique, stress test)
- Thread dumps / profiler
- Vérifier les invariants atomiquement
- 强制触发线程交错(策略性睡眠、压力测试)
- 线程转储/性能分析器
- 原子性检查不变量
Pour bugs d'intégration
集成bug排查
- Snapshot du payload exact (HAR, logs)
- Reproduire avec ou client minimal
curl - Vérifier versions exactes des dépendances
- 捕获确切负载快照(HAR、日志)
- 使用或最小化客户端重现问题
curl - 检查依赖库的确切版本
Pour flaky tests
不稳定测试(flaky tests)排查
- Run 100x pour mesurer le taux de flakiness
- Identifier la dépendance (temps, ordre, ressource partagée)
- Ne JAMAIS marquer un test sans ticket de correction
@Flaky
- 运行100次以测量不稳定率
- 识别依赖因素(时间、顺序、共享资源)
- 绝对不要在未创建修复工单的情况下标记测试为
@Flaky
Intégration Claude Craft
Claude Craft集成
- — bug fix en mode TDD (test qui échoue d'abord)
/qa:tdd - — correction automatisée des bugs QA
/qa:fix - — registre des tests de régression
/qa:regression - Skill — découper le debug en phases atomiques
atomic-tasks - Rule 07 (testing) — bug fix = test de régression obligatoire
- — 以TDD模式修复bug(先编写失败的测试)
/qa:tdd - — 自动修复QA发现的bug
/qa:fix - — 回归测试注册表
/qa:regression - Skill — 将调试拆解为原子阶段
atomic-tasks - 规则07(testing) — bug修复必须包含回归测试
Ressources
资源
- obra/superpowers
- Rule
.claude/rules/07-testing.md - Command ,
/qa:tdd/qa:regression
Date de dernière mise à jour : 2026-04-15
Version : 1.0.0
- obra/superpowers
- 规则
.claude/rules/07-testing.md - 命令 ,
/qa:tdd/qa:regression
最后更新日期: 2026-04-15
版本: 1.0.0