Lektion 3 12 Min.

Systematisch debuggen in 5 Schritten

Der 5-Schritte-Debugging-Prozess im Detail — reproduzieren, isolieren, identifizieren, beheben, verifizieren — mit konkreten Techniken fuer jeden Schritt.

🔄 Quick Recall: In der vorherigen Lektion hast du gelernt, Fehlermeldungen systematisch zu lesen: Typ, Beschreibung, Ort. Du weisst, dass du bei Stack Traces zuerst DEINE Codezeilen findest und dass „undefined" bedeutet, eine Ebene hoeher nach der Ursache zu suchen. Jetzt vertiefst du jeden Schritt des 5-Schritte-Prozesses.

Schritt 1: Reproduzieren

Ein Bug, den du nicht zuverlaessig ausloesen kannst, ist ein Bug, den du nicht verifiziert beheben kannst. Reproduktion ist nicht optional.

Checkliste fuer die Reproduktion:

  • Welches Betriebssystem und welche Version?
  • Welcher Browser (bei Web-Apps)?
  • Welche Eingabedaten genau?
  • Welche Reihenfolge von Aktionen?
  • Welcher Nutzertyp (Admin, normaler Nutzer)?
  • Tritt der Bug konsistent auf oder nur manchmal?

KI-Prompt fuer schwer reproduzierbare Bugs:

„Ein Nutzer meldet [Fehlerbeschreibung]. Bei mir kann ich es nicht reproduzieren. Welche Bedingungen koennte ich uebersehen? Der Nutzer verwendet [Browser/OS/Geraet]. Was sollte ich pruefen?"

Quick Check: Warum ist Reproduktion der wichtigste Debugging-Schritt? (Antwort: Ohne zuverlaessige Reproduktion kannst du nicht (a) den Bug untersuchen, (b) Hypothesen testen oder (c) verifizieren, ob dein Fix funktioniert. Ein Fix ohne Reproduktion ist Hoffnung, keine Loesung.)

Schritt 2: Isolieren

Du weisst, dass der Bug existiert. Jetzt musst du herausfinden, WO genau.

Binaere Suche: Der Turbo

Die maechtigste Isolationstechnik: Teile das Problem in zwei Haelften, teste eine, schraenke ein, wiederhole.

SuchraumTests mit binaerer SucheTests Zeile fuer Zeile
100 Zeilen7 Testsbis zu 100 Tests
1.000 Zeilen10 Testsbis zu 1.000 Tests
10.000 Zeilen14 Testsbis zu 10.000 Tests

Weitere Isolationstechniken

  • Auskommentieren: Code blockweise deaktivieren, bis der Bug verschwindet. Der zuletzt auskommentierte Block enthaelt den Bug
  • Minimales Beispiel: Den Code auf das Minimum reduzieren, das den Bug noch zeigt. Oft wird die Ursache dabei offensichtlich
  • Git bisect: Bei Git-Repos den Commit finden, der den Bug eingefuehrt hat (automatisierte binaere Suche ueber Commits)

Schritt 3: Identifizieren

Du weisst WO der Bug ist. Jetzt verstehst du WARUM.

Hypothesengetriebenes Debugging:

  1. Bilde eine Hypothese: „Ich glaube, die Variable X ist null, weil…"
  2. Teste die Hypothese: Fuege einen Log/Check ein, der X prueft
  3. Bestaetigt → Ursache gefunden
  4. Widerlegt → Neue Hypothese basierend auf dem Ergebnis

KI-Prompt fuer Hypothesengenerierung:

„Ich habe den Bug isoliert: [Beschreibung des Verhaltens] in [Code-Abschnitt]. Die erwartete Ausgabe ist [X], die tatsaechliche ist [Y]. Was sind die 3 wahrscheinlichsten Ursachen? Fuer jede Ursache: Wie kann ich sie testen?"

Schritt 4: Beheben

Jetzt — und erst jetzt — aenderst du Code.

Regeln fuer gute Fixes:

  • Minimal: Aendere so wenig wie moeglich. Jede zusaetzliche Aenderung ist ein potenzieller neuer Bug
  • Ursache, nicht Symptom: Wenn eine Variable null ist, finde heraus WARUM sie null ist — statt einfach einen null-Check einzubauen
  • Verstaendlich: Wenn du den Fix nicht erklaeren kannst, hast du den Bug nicht verstanden

Schritt 5: Verifizieren

Der Fix ist geschrieben. Aber bist du sicher, dass er funktioniert? Und bist du sicher, dass er nichts Neues kaputt gemacht hat?

Verifikations-Checkliste:

  • Der Bug tritt nicht mehr auf (den reproduzierten Testfall ausfuehren)
  • Der Regressionstest besteht (Test-Driven Debugging)
  • Bestehende Tests laufen noch durch (keine neuen Fehler)
  • Edge Cases getestet (leere Eingaben, Grenzwerte, null)

Quick Check: Was ist „Test-Driven Debugging"? (Antwort: Zuerst einen Test schreiben, der den Bug beweist (fehlschlaegt). Dann den Bug beheben, bis der Test besteht. Der Test bleibt als Regressionstest und verhindert, dass der gleiche Bug spaeter zurueckkommt.)

Key Takeaways

  • Reproduzieren ist IMMER der erste Schritt — ohne Reproduktion kein verifizierter Fix
  • Binaere Suche isoliert Bugs exponentiell schneller als lineares Suchen (10 Tests statt 1.000)
  • Hypothesengetriebenes Debugging: Hypothese bilden → testen → bestaetigen/widerlegen → wiederholen
  • Test-Driven Debugging: Erst den fehlschlagenden Test, dann den Fix — so kommt der Bug nie zurueck
  • Minimale Fixes: So wenig Code wie moeglich aendern, Ursache statt Symptom beheben

Up Next

In der naechsten Lektion lernst du die konkreten Werkzeuge: Print-Debugging, IDE-Debugger, Browser DevTools — und wann du welches Werkzeug einsetzt.

Wissenscheck

1. Ein Nutzer meldet: 'Die App stuerzt ab.' Bei dir funktioniert alles. Was ist dein erster Schritt?

2. Du hast einen Bug in einer App mit 20 Funktionen. Wie findest du die fehlerhafte Funktion am schnellsten?

3. Du hast den Bug identifiziert. Was tust du BEVOR du ihn behebst?

Beantworte alle Fragen zum Prüfen

Erst das Quiz oben abschließen

Passende Skills