Einheit 6 / 12

Debugging und Ursachenanalyse

Gewinne:

  • Möglichkeit, einen Fehler auf die kleinste reproduzierbare Instanz zu reduzieren und ihn mit vollständigem Beweis an die KI zu übertragen
  • Möglichkeit, evidenzbasierte Hypothesen mit der günstigsten Kontrolle zu testen und die Grundursache zu finden
  • Fähigkeit, die Grundursache zu beheben und mit einem Regressionstest abzusichern, anstatt das Symptom zu beheben

Beim Debuggen geht es darum, herauszufinden, warum sich eine Software unerwartet verhält, und das Problem zu beheben. Es ist der Job, bei dem ein Entwickler die meiste Zeit verbringt und am meisten müde wird; Denn meist liegt der Fehler nicht dort, wo er auftritt, sondern liegt ein paar Schritte dahinter versteckt. KI ist ein leistungsstarker Denkpartner, der diese Forschung beschleunigt – aber nur, wenn Sie ihr die richtigen Beweise liefern. Das Debuggen ohne Beweise ist der Bereich, in dem KI die meisten Halluzinationen hervorruft.

In dieser Einheit etablieren wir einen disziplinierten Ablauf von der Generierung des Fehlers bis zur Ursache: Klärung des Symptoms, Sammlung von Beweisen (Fehlermeldung, Stack-Trace, Protokoll, Eintrag), Generierung einer Hypothese, Testen der Hypothese und Validieren des Fixes. KI hilft bei jedem Schritt; aber die „feste“ Entscheidung wird getroffen, indem man sieht, dass der Fehler tatsächlich verschwunden ist.

Warum sind Beweise alles?

Ein LLM erkennt Fehler nicht so wie Sie; Er weiß nur, was du ihm sagst. Ein Satz wie „Die Anwendung stürzt ab“ gibt dem Modell fast keine Informationen, und das Modell füllt die Lücke mit einer Vorhersage – also einer Halluzination. Im Gegenzug die vollständige Fehlermeldung, Stack-Trace – eine Aufschlüsselung darüber, über welche Funktionsaufrufe der Fehler aufgetreten ist, welche Eingabe den Fehler ausgelöst hat und was erwartet wurde usw. Anhand des beobachteten Verhaltens kann das Modell wahre Wahrscheinlichkeiten einstufen.

Stellen Sie sich KI beim Debuggen als Assistent eines Detektivs vor: Je mehr Beweise Sie vorlegen, desto genauer ist die Hypothese, die sie generiert. Wenn es keine Beweise gibt, wird der Assistent nur raten und Sie möglicherweise auf die falsche Spur führen.

Tipp: Bevor Sie einen Fehler auf KI portieren, reduzieren Sie ihn auf das kleinste reproduzierbare Beispiel. Der kleinste Code und die kleinste Eingabe, die den Fehler auslöst, machen die Sache sowohl für Sie als auch für das Modell radikal einfacher; Meistens findet man bei dieser Reduktion die Ursache selbst.

Schritt für Schritt: Ablauf der Ursachenanalyse

  1. Klären Sie das Symptom. „Was ist los, was hast du erwartet?“ Schreiben Sie beides in einen Satz.
  2. Sammeln Sie Beweise. Vollständige Fehlermeldung, Stack-Trace, relevante Protokollzeilen, auslösender Eintrag, Versionsinformationen.
  3. Lassen Sie die Hypothese erstellen. Von AI: „3 mögliche Ursachen, die dieses Symptom erklären, und wie teste ich sie jeweils?“ fragen.
  4. Testen Sie zuerst die günstigste Hypothese. Fügen Sie ein Protokoll hinzu, drucken Sie einen Wert, führen Sie einen Test durch. Bestätigen die Beweise die Hypothese?
  5. Beheben Sie die Grundursache, nicht das Symptom. Anstatt das Symptom mit einem Pflaster zum Schweigen zu bringen, sollten Sie die Grundursache angehen.
  6. Regressionstests validieren und hinzufügen. Sehen Sie, wie der Fehler verschwindet. Schreiben Sie dann einen Test, der diesen Fehler abfängt, damit er nicht erneut auftritt.

Drei Mini-Hüllen

Fall 1 – Der Stack-Trace führte zur richtigen Datei. Eine Anwendung hat bei bestimmten Anfragen einen 500-Fehler zurückgegeben. Der Entwickler gab der KI den vollständigen Stack-Trace und die Auslöseanforderung; Das Modell ging davon aus, dass der Fehler durch einen None-Wert in einer Datumsanalyseebene verursacht wurde. Der Entwickler hat dieser Zeile ein Protokoll hinzugefügt, es überprüft und das Problem in 15 Minuten gelöst. 2 Stunden wurden am Vortag mit unbewiesenen Experimenten verschwendet.

Fall 2 – Halluzination führte auf die falsche Fährte. Ein anderer Entwickler schrieb einfach: „Datenbankverbindung wird unterbrochen“. Die KI beschuldigte eine Verbindungspool-Einstellung ohne jegliche Beweise; Der Entwickler hat 40 Minuten damit verbracht, an dieser Einstellung herumzubasteln. Die eigentliche Ursache war ein Timeout auf der Netzwerkseite und konnte erst durch einen Blick in die Protokolle aufgedeckt werden. Lektion: Eine Hypothese ohne Beweise ist nur wahrscheinlich, nicht zuverlässig.

Fall 3 – Flaky-Fehler abgefangen. Es gab einen Test, der gelegentlich fehlschlug. Die KI erhielt den Testcode, die Fehlermeldung und die Information „Manchmal besteht es, manchmal schlägt es fehl“; Das Modell deutete auf eine gemeinsame Zeit-/Reihenfolgeabhängigkeit der Tests hin. Die Überprüfung bestätigte, dass der Test auf der Ortszeit des Systems basierte. Sobald die Uhr repariert (verspottet) wurde, wurde der Test stabil.

Vier kopierbare Vorlagen

Evidenzbasierte Hypothesengenerierung:

Ich behebe einen Fehler. Beweise unten.- Erwartetes Verhalten: {{erwartet}}- Beobachtetes Verhalten: {{observed}}- Fehlermeldung/Stack-Trace: {{trace}}- Auslösende Eingabe: {{input}}- Umgebung/Version: {{version}}Listen Sie die 3 WAHRSCHEINLICHSTEN Grundursachen auf, die dieses Symptom erklären. Für jeden: Wie teste ich (günstigste Prüfung) und wie behebe ich das Problem, wenn es wahr ist. Wenn die Beweise nicht ausreichen, teilen Sie mir mit, welche zusätzlichen Informationen Sie benötigen.

Interpretieren des Stacktrace:

Lesen Sie diesen Stacktrace. Unterscheiden Sie zwischen der Zeile, in der der Fehler WAHRSCHEINLICH beginnt (an der Wurzel) und den Zeilen, die nur Fortsetzungen der Kette sind. Schlagen Sie 1-2 Orte vor, an denen Sie zuerst suchen sollten. Zugehöriger Code:{{code}}Trace:{{trace}}

Minimale Reproduktionssubtraktion:

Der folgende Code erzeugt einen Fehler. Reduzieren Sie es auf die KLEINSTE Instanz, die immer noch den Fehler auslöst, aber alles Unnötige verwirft. Gehen Sie nicht davon aus, dass sich nicht jedes entfernte Teil auf den Fehler auswirkt, sondern fügen Sie einen Hinweis hinzu: „Wenn der Fehler verschwindet, wenn Sie dieses entfernen, ist das der Grund.“{{code}}

Validierung und Regressionstests nach der Korrektur:

Angenommen, die Grundursache ist {{cause}} und ich mache den folgenden Fix: {{fix}}.1) Behebt dieser Fix tatsächlich das Symptom, wird es Nebenwirkungen haben? 2) Schreiben Sie einen Regressionstest, der diesen Fehler in Zukunft erkennt.

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

Schwach: „Der Code funktioniert nicht, warum?“
Stark: „Knoten 20 / Express. POST /orders gibt 500 zurück, wenn „items“ eine leere Zeichenfolge im Textkörper ist; hätte 400 zurückgeben sollen. Stack-Trace: TypeError: Eigenschaften von undefiniert können nicht gelesen werden (Anzeige „0“) – angehängt ist der vollständige Trace und der zugehörige Handler. Nennen Sie mir die 3 wahrscheinlichsten Ursachen, die dieses Symptom erklären, und wie man sie jeweils testet. [Trace + Code]“

Leistungsstarke Version; Es gibt die Umgebung, den Endpunkt, die Triggereingabe, den genauen Fehlertyp und das erwartete Verhalten an. Das Modell kann keine Vorhersagen mehr treffen, sondern Analysen.

Schritt

Der Beitrag der KI

Ihre Kontrolle

Beweise sammeln

Welche Beweise benötigt werden, erinnert

Sammelt wirklich Beweise

Hypothesengenerierung

Listen Sie mögliche Gründe auf

Priorisiert anhand des Kontexts

Hypothesentest

Empfiehlt die Testmethode

Bedient und beobachtet persönlich

Korrektur

Patch empfiehlt

Löst es die Grundursache? Es ist wahr.

Rückschritt

schreibt einen Test

Überprüft, ob der Test fehlerhaft ist

Die Ursache lösen, nicht das Symptom

Meistens schlägt die KI einen Patch vor, der das Symptom schnell zum Schweigen bringt: Fügen Sie einen Try/Catch hinzu, setzen Sie eine Nullprüfung und schlucken Sie den Fehler herunter. Das ist manchmal wahr, oft gefährlich; weil die ursprüngliche Ursache bestehen bleibt und woanders wieder hervorbricht. Stellen Sie sich bei jedem Fix die Frage: „Wird dadurch die Fehlerursache behoben oder wird der Fehler dadurch unsichtbar?“ Sobald Sie die Grundursache gefunden haben, ist die Lösung normalerweise kleiner, robuster und dauerhafter.

Achtung: Das stille Verschlucken einer Ausnahme (leerer Catch) löst den Fehler nicht; es verbirgt lediglich und macht eine zukünftige Diagnose unmöglich. Wenn KI eine solche „Lösung“ vorschlägt, akzeptieren Sie sie nicht, ohne die Grundursache zu hinterfragen.

Häufige Fehler

  • Fragen ohne Beweise stellen. Mehrdeutige Sätze treiben das Modell in Halluzinationen; Geben Sie den vollständigen Fehler, die Ablaufverfolgung und die Eingabe an.
  • Festhalten an der ersten Hypothese. Der erste Vorschlag der KI ist möglicherweise nicht der wahrscheinlichste; Beginnen Sie mit der günstigsten kontrollierbaren Hypothese.
  • Das Symptom beheben und die Grundursache übersehen. Der stummgeschaltete Fehler kehrt zurück.
  • Schließen Sie den Fix, ohne ihn zu überprüfen. Sehen Sie im produktionsnahen Zustand, dass der Fehler tatsächlich verschwindet.
  • Keine Regressionstests schreiben. Wenn keine Tests hinzugefügt werden, wird derselbe Fehler in späteren Versionen stillschweigend erneut auftreten.

Zusammenfassend

Beim Debuggen ist die Leistungsfähigkeit der KI direkt proportional zu den Beweisen, die Sie ihr liefern: Ohne die vollständige Fehlermeldung, den Stack-Trace, die auslösenden Eingaben und das erwartete Verhalten spekuliert das Modell nur. Disziplinierter Ablauf – Symptome klären, Beweise sammeln, Hypothesen erstellen, Tests mit der günstigsten Kontrolle durchführen, Grundursache beheben, überprüfen und Regressionstests hinzufügen – schließt den Fehler schnell und dauerhaft. KI ist ein Hypothesengenerator; Sie sind derjenige, der entscheidet, dass der Fehler tatsächlich behoben ist.

Anwendungsaufgabe

Wählen Sie einen echten Fehler aus, auf den Sie kürzlich gestoßen sind (oder reproduzieren Sie einen Testfehler). Führen Sie zuerst den Schritt „Minimale Reproduktion“ durch. Entfernen Sie den kleinsten Code und die kleinste Eingabe, die den Fehler auslöst. Dann holen Sie sich mit der Vorlage „Evidenzbasierte Hypothesengenerierung“ 3 mögliche Ursachen und Testmethoden der KI. Testen Sie selbst die günstigste Hypothese, finden Sie die Grundursache, beheben Sie sie und schreiben Sie schließlich einen Regressionstest, der diesen Fehler in Zukunft erkennt und überprüft, ob der Test tatsächlich fehlerhaft ist.

Checkliste

  • [ ] Ich reduziere den Fehler auf die kleinste reproduzierbare Stichprobe, bevor ich ihn an die KI übertrage.
  • [] Ich füge der Eingabeaufforderung die vollständige Fehlermeldung, den Stack-Trace, die Eingabe und das erwartete Verhalten hinzu.
  • [ ] Ich beginne mit dem günstigsten kontrollierbaren, ohne mich auf eine einzige Hypothese festzulegen.
  • [ ] Ich bestätige, dass ich die Grundursache behoben habe, anstatt das Symptom zu beheben.
  • [ ] Ich beobachte, dass der Fix den Fehler tatsächlich behebt.
  • [ ] Ich füge für jeden behobenen Fehler einen Regressionstest hinzu.