Diagnose von Bugs
Baue ein schnelles, spezifisches Pass/Fail-Signal, bevor du eine starke Theorie aufstellst. Entferne Geheimnisse aus Befehlen, Ausgaben, Traces und gespeicherten Artefakten.
Schleife
- Reproduzieren. Schreibe einen Befehl, der das genaue Symptom des Benutzers erreicht und auf diesen Bug fehlschlagen kann. Falls kein enger Reproduzierer existiert, lies references/feedback-loop.md.
- Minimieren. Entferne nach und nach Eingaben, Schritte, Aufrufer und Konfiguration. Behalte nur das, was der Fehler benötigt.
- Hypothese aufstellen. Formuliere 3–5 priorisierte, falsifizierbare Ursachen. Nenne für jede die Beobachtung, die sie bestätigen oder widerlegen würde.
- Untersuchen. Ändere jeweils eine Variable. Bevorzuge einen Debugger oder gezielte Instrumentierung an Grenzen. Markiere temporäre Logs mit einem eindeutigen
[DEBUG-...]-Präfix. - Fix sichern. Verwandele die kleinste echte Reproduktion in einen fehlschlagenden Regressionstest an der richtigen öffentlichen Nahtstelle. Wende den kleinsten Fix an. Führe den Test und die ursprüngliche Reproduktion erneut aus.
- Aufräumen. Entferne temporäre Instrumentierung und Testumgebungen. Berichte über Ursache, Beweise, Fix und verbleibende Abdeckungslücken.
Regeln
- Gib nach zwei fehlgeschlagenen Fixversuchen auf. Überprüfe die Hypothese oder das Design, bevor du einen weiteren Patch versuchst. Keine kumulierten Vermutungen.
- Bei einer Performance-Regression messe eine Baseline und erstelle ein Profil oder führe eine binäre Suche durch, bevor du Code änderst. Logs allein sind keine Performance-Diagnose.
- Falls keine korrekte Testnahtstelle existiert, sage dies. Beurteile nach dem Fix mit
$codebase-design, ob die fehlende Nahtstelle strukturelle Arbeit erfordert. - Beanspruche Erfolg nur, wenn das ursprüngliche Symptom verschwunden ist und der Regressionstest bestanden wird.