Debuggen met pdb
Gebruik de ingebouwde debugger van Python om interactief door code te stappen.
Debuggen met pdb is een gratis Python Academy-les op CoddyKit. Dit is les 4 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Python Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Python Academy bevat in totaal 4 lessen.
Wat is pdb?
pdb is de ingebouwde interactieve debugger van Python. Hiermee kun je de uitvoering pauzeren, variabelen inspecteren en code regel voor regel doorlopen.
import pdb
def faulty(n):
result = n * 2
pdb.set_trace() # execution pauses here
return result + 1
faulty(5)breakpoint() — Python 3.7+
breakpoint() is een ingebouwde verkorte notatie voor import pdb; pdb.set_trace(). De functie houdt rekening met de omgevingsvariabele PYTHONBREAKPOINT.
def process(data):
for item in data:
if item < 0:
breakpoint() # drop into pdb here
print(item)
process([1, -2, 3])Belangrijkste pdb-opdrachten
Essentiële opdrachten: n (volgende regel), s (stap naar binnen), c (doorgaan), q (afsluiten), p expr (afdrukken), l (broncode weergeven).
# 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 — quitVariabelen inspecteren
Gebruik p om een expressie af te drukken, pp voor een nette afdruk en locals() om alle lokale variabelen te bekijken.
# (Pdb) p data
# [1, -2, 3]
# (Pdb) pp {"key": "value", "num": 42}
# {'key': 'value',
# 'num': 42}
# (Pdb) p locals()Voorwaardelijke onderbrekingspunten
Stel voorwaardelijke onderbrekingspunten in om alleen te pauzeren wanneer een voorwaarde waar is, zodat je niet steeds opnieuw hoeft te stappen.
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 < 0Foutopsporing achteraf
Inspecteer de status direct na een niet-afgehandelde uitzondering met pdb.post_mortem(), of voer je script uit met python -m pdb script.py.
import pdb
try:
1 / 0
except ZeroDivisionError:
pdb.post_mortem() # inspect at the crash point
# Or from CLI:
# python -m pdb my_script.pyVariabelen bekijken met w en where
w (where) toont de traceback van de huidige aanroepstack, zodat je weet hoe je bij het huidige stackframe bent gekomen.
# (Pdb) w
# /app/main.py(10)main()
# -> process([1,-2,3])
# /app/main.py(5)process()
# -> breakpoint()Tussen stackframes navigeren
u (up) en d (down) navigeren tussen stackframes, zodat je variabelen in aanroepende functies kunt inspecteren.
# (Pdb) u — move to calling frame
# (Pdb) d — move back down
# (Pdb) p data — inspect variable in that frameipdb — Verbeterde debugger
ipdb breidt pdb uit met IPython-functies: aanvullen met tab, syntaxisaccentuering en magic-opdrachten.
# pip install ipdb
import ipdb
def calc(x):
ipdb.set_trace()
return x ** 2
calc(7)pudb — Visuele terminaldebugger
pudb biedt in de terminal een schermvullende TUI-debugger met panelen voor code, variabelen en de stack.
# pip install pudb
# python -m pudb my_script.py
import pudb
def run():
pudb.set_trace()
data = [1, 2, 3]
return sum(data)Breekpunten in CI uitschakelen
Stel PYTHONBREAKPOINT=0 in om ervoor te zorgen dat alle aanroepen van breakpoint() in CI of productie geen effect hebben.
# In CI pipeline:
# export PYTHONBREAKPOINT=0
# python my_script.py
# breakpoint() is silently skippedKorte controle
Met welk pdb-commando ga je door met uitvoeren tot het volgende breekpunt?
Samenvatting
Gebruik breakpoint() om de uitvoering te pauzeren en in pdb terecht te komen. Belangrijke opdrachten zijn n, s, c, p en q. Probeer voor uitgebreidere mogelijkheden ipdb of pudb. Schakel dit in CI uit met PYTHONBREAKPOINT=0.
Leer Python met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 76
- Lessen
- 320
Veelgestelde vragen
Is de les “Debuggen met pdb” gratis?
Ja — de volledige tekst van “Debuggen met pdb” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Python Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Python Academy bevat in totaal 4 lessen.
Wat leer ik in “Debuggen met pdb”?
Gebruik de ingebouwde debugger van Python om interactief door code te stappen. Je oefent met Python Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Python Academy te beginnen?
Ervaring vooraf is niet nodig. Python Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 4 van 4.
Hoe lang duurt de les “Debuggen met pdb”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Python Academy?
Ja. Elke les over Python Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Basisprincipes van de module logging
- Handlers, formatters en filters
- Gestructureerde logging
- Debuggen met pdb