Fejlfinding med pdb
Brug Pythons indbyggede debugger til interaktiv gennemgang af kode.
Fejlfinding med pdb er en gratis Python Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Python Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Python Academy-kurset indeholder 4 lektioner i alt.
Hvad er pdb?
pdb er Pythons indbyggede interaktive debugger. Den lader dig sætte programkørslen på pause, undersøge variabler og gå gennem koden linje for linje.
import pdb
def faulty(n):
result = n * 2
pdb.set_trace() # execution pauses here
return result + 1
faulty(5)breakpoint() – Python 3.7+
breakpoint() er en indbygget kortform for import pdb; pdb.set_trace(). Den respekterer miljøvariablen PYTHONBREAKPOINT.
def process(data):
for item in data:
if item < 0:
breakpoint() # drop into pdb here
print(item)
process([1, -2, 3])Vigtigste pdb-kommandoer
Vigtige kommandoer: n (næste linje), s (gå ind i), c (fortsæt), q (afslut), p expr (udskriv), l (vis kildekode).
# 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 — quitUndersøgelse af variabler
Brug p til at udskrive et udtryk, pp til pæn udskrift og locals() til at se alle lokale variabler.
# (Pdb) p data
# [1, -2, 3]
# (Pdb) pp {"key": "value", "num": 42}
# {'key': 'value',
# 'num': 42}
# (Pdb) p locals()Betingede breakpoints
Indstil betingede breakpoints for kun at sætte kørsel på pause, når en betingelse er sand, så du undgår gentagne trin.
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 < 0Fejlfinding efter et nedbrud
Undersøg tilstanden lige efter en uhåndteret undtagelse med pdb.post_mortem(), eller kør dit script med 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.pyOvervågning af variable med w og where
w (where) udskriver den aktuelle trace for kaldestakken, så du ved, hvordan du nåede frem til det aktuelle frame.
# (Pdb) w
# /app/main.py(10)main()
# -> process([1,-2,3])
# /app/main.py(5)process()
# -> breakpoint()Skift mellem frames
u (up) og d (down) skifter mellem frames i kaldestakken, så du kan undersøge variable i kaldende funktioner.
# (Pdb) u — move to calling frame
# (Pdb) d — move back down
# (Pdb) p data — inspect variable in that frameipdb — Udvidet debugger
ipdb udvider pdb med IPython-funktioner: tabulatorfuldførelse, syntaksfremhævning og magic-kommandoer.
# pip install ipdb
import ipdb
def calc(x):
ipdb.set_trace()
return x ** 2
calc(7)pudb — Visuel terminaldebugger
pudb tilbyder en fuldskærms-TUI-debugger i terminalen med paneler til kode, variable og stak.
# pip install pudb
# python -m pudb my_script.py
import pudb
def run():
pudb.set_trace()
data = [1, 2, 3]
return sum(data)Deaktivér breakpoints i CI
Sæt PYTHONBREAKPOINT=0 for at gøre alle kald til breakpoint() til tomme operationer i CI eller produktion.
# In CI pipeline:
# export PYTHONBREAKPOINT=0
# python my_script.py
# breakpoint() is silently skippedHurtigt tjek
Hvilken pdb-kommando fortsætter udførelsen indtil næste breakpoint?
Opsummering
Brug breakpoint() til at sætte udførelsen på pause og åbne pdb. Centrale kommandoer: n, s, c, p, q. Prøv ipdb eller pudb for en mere omfattende oplevelse. Deaktivér det med PYTHONBREAKPOINT=0 i CI.
Lær Python med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 76
- Lektioner
- 320
Ofte stillede spørgsmål
Er lektionen “Fejlfinding med pdb” gratis?
Ja — hele teksten til “Fejlfinding med pdb” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Python Academy-kurset, skal du opgradere til CoddyKit PRO. Python Academy-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Fejlfinding med pdb”?
Brug Pythons indbyggede debugger til interaktiv gennemgang af kode. Du øver dig i Python Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Python Academy?
Der kræves ingen tidligere erfaring. Python Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.
Hvor lang tid tager lektionen “Fejlfinding med pdb”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Python Academy-lektion?
Ja. Alle Python Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Grundlæggende om logging-modulet
- Handlers, formatters og filtre
- Struktureret logging
- Fejlfinding med pdb