0Pricing
Python Academy · Lektion

Debugging mit pdb

Verwenden Sie den integrierten Python-Debugger, um Code interaktiv schrittweise auszuführen.

Debugging mit pdb ist eine kostenlose Python Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Python Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was ist pdb?

pdb ist der interaktive Debugger von Python. Damit können Sie die Ausführung anhalten, Variablen untersuchen und den Code Zeile für Zeile durchlaufen.

import pdb

def faulty(n):
    result = n * 2
    pdb.set_trace()   # execution pauses here
    return result + 1

faulty(5)

breakpoint() – Python 3.7+

breakpoint() ist eine integrierte Kurzform für import pdb; pdb.set_trace(). Die Umgebungsvariable PYTHONBREAKPOINT wird dabei berücksichtigt.

def process(data):
    for item in data:
        if item < 0:
            breakpoint()   # drop into pdb here
        print(item)

process([1, -2, 3])

Grundlegende pdb-Befehle

Wichtige Befehle: n (nächste Zeile), s (in den Aufruf springen), c (fortsetzen), q (beenden), p expr (ausgeben), l (Quelltext auflisten).

# Inside pdb prompt:
# (Pdb) n          — execute next line
# (Pdb) s          — step into function
# (Pdb) c          — continue to next breakpoint
# (Pdb) p my_var   — print value
# (Pdb) l          — show source around current line
# (Pdb) q          — quit

Variablen untersuchen

Verwenden Sie p, um einen Ausdruck auszugeben, pp für eine formatierte Ausgabe und locals(), um alle lokalen Variablen anzuzeigen.

# (Pdb) p data
# [1, -2, 3]
# (Pdb) pp {"key": "value", "num": 42}
# {'key': 'value',
#  'num': 42}
# (Pdb) p locals()

Bedingte Haltepunkte

Setzen Sie bedingte Haltepunkte, damit die Ausführung nur angehalten wird, wenn eine Bedingung wahr ist. So vermeiden Sie wiederholtes schrittweises Durchlaufen.

import pdb

def process(items):
    for i, item in enumerate(items):
        if item < 0:   # manual condition
            pdb.set_trace()
        result = item * 2

# Or inside pdb: b filename.py:12, x < 0

Debugging nach einem Fehler

Untersuchen Sie den Zustand unmittelbar nach einer unbehandelten Ausnahme mit pdb.post_mortem() oder führen Sie Ihr Skript mit python -m pdb script.py aus.

import pdb

try:
    1 / 0
except ZeroDivisionError:
    pdb.post_mortem()   # inspect at the crash point

# Or from CLI:
# python -m pdb my_script.py

Variablen mit w und where überwachen

w (where) gibt den aktuellen Aufruf-Stack-Trace aus, damit Sie nachvollziehen können, wie Sie zum aktuellen Frame gelangt sind.

# (Pdb) w
# /app/main.py(10)main()
# -> process([1,-2,3])
# /app/main.py(5)process()
# -> breakpoint()

Zwischen Frames wechseln

u (up) und d (down) wechseln zwischen den Frames des Aufruf-Stacks, damit Sie Variablen in aufrufenden Funktionen untersuchen können.

# (Pdb) u   — move to calling frame
# (Pdb) d   — move back down
# (Pdb) p data   — inspect variable in that frame

ipdb — Erweiterter Debugger

ipdb erweitert pdb um IPython-Funktionen: Tab-Vervollständigung, Syntaxhervorhebung und Magic Commands.

# pip install ipdb
import ipdb

def calc(x):
    ipdb.set_trace()
    return x ** 2

calc(7)

pudb — Visueller Terminal-Debugger

pudb stellt im Terminal einen bildschirmfüllenden TUI-Debugger mit Panels für Code, Variablen und den Stack bereit.

# pip install pudb
# python -m pudb my_script.py

import pudb

def run():
    pudb.set_trace()
    data = [1, 2, 3]
    return sum(data)

Breakpoints in CI deaktivieren

Setzen Sie PYTHONBREAKPOINT=0, damit alle Aufrufe von breakpoint() in CI oder der Produktion wirkungslos sind.

# In CI pipeline:
# export PYTHONBREAKPOINT=0
# python my_script.py
# breakpoint() is silently skipped

Schnelltest

Welcher pdb-Befehl setzt die Ausführung bis zum nächsten Breakpoint fort?

Zusammenfassung

Verwenden Sie breakpoint(), um die Ausführung anzuhalten und in pdb zu wechseln. Die wichtigsten Befehle sind: n, s, c, p, q. Für eine umfangreichere Benutzeroberfläche können Sie ipdb oder pudb ausprobieren. Deaktivieren Sie Breakpoints in CI mit PYTHONBREAKPOINT=0.

Häufig gestellte Fragen

Ist die Lektion „Debugging mit pdb“ kostenlos?

Ja — der vollständige Text von „Debugging mit pdb“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Python Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Python Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Debugging mit pdb“?

Verwenden Sie den integrierten Python-Debugger, um Code interaktiv schrittweise auszuführen. Du übst Python Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Python Academy zu starten?

Keine Vorkenntnisse erforderlich. Python Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Debugging mit pdb“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Python Academy-Lektion Code schreiben und ausführen?

Ja. Jede Python Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Grundlagen des logging-Moduls
  2. Handler, Formatter und Filter
  3. Strukturiertes Logging
  4. Debugging mit pdb
← Zurück zu Python Academy