Felsökning med pdb
Använd Pythons inbyggda debugger för att stega genom kod interaktivt.
Felsökning med pdb är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad är pdb?
pdb är Pythons inbyggda interaktiva debugger. Den låter dig pausa körningen, granska variabler och stega genom koden rad för rad.
import pdb
def faulty(n):
result = n * 2
pdb.set_trace() # execution pauses here
return result + 1
faulty(5)breakpoint() – Python 3.7+
breakpoint() är en inbyggd kortform för import pdb; pdb.set_trace(). Den tar hänsyn till miljövariabeln PYTHONBREAKPOINT.
def process(data):
for item in data:
if item < 0:
breakpoint() # drop into pdb here
print(item)
process([1, -2, 3])Grundläggande pdb-kommandon
Viktiga kommandon: n (nästa rad), s (stega in), c (fortsätt), q (avsluta), p expr (skriv ut) och l (lista källkod).
# 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 — quitInspektera variabler
Använd p för att skriva ut ett uttryck, pp för formaterad utskrift och locals() för att se alla lokala variabler.
# (Pdb) p data
# [1, -2, 3]
# (Pdb) pp {"key": "value", "num": 42}
# {'key': 'value',
# 'num': 42}
# (Pdb) p locals()Villkorliga brytpunkter
Ange villkorliga brytpunkter för att pausa endast när ett villkor är sant och därmed undvika upprepade stegningar.
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 < 0Felsökning efter ett fel
Inspektera tillståndet direkt efter ett ohanterat undantag med hjälp av pdb.post_mortem() eller kör skriptet 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.pyVisa variabler med w och where
w (where) skriver ut den aktuella anropsstackens traceback, så att Ni ser hur Ni kom till den aktuella stackramen.
# (Pdb) w
# /app/main.py(10)main()
# -> process([1,-2,3])
# /app/main.py(5)process()
# -> breakpoint()Navigera mellan stackramar
u (up) och d (down) navigerar mellan stackramarna, så att Ni kan inspektera variabler i anropande funktioner.
# (Pdb) u — move to calling frame
# (Pdb) d — move back down
# (Pdb) p data — inspect variable in that frameipdb — Utökad felsökare
ipdb utökar pdb med IPython-funktioner: tabbkomplettering, syntaxmarkering och magic-kommandon.
# pip install ipdb
import ipdb
def calc(x):
ipdb.set_trace()
return x ** 2
calc(7)pudb — Visuell terminalfelsökare
pudb tillhandahåller en TUI-felsökare i helskärm i terminalen, med paneler för kod, variabler och anropsstack.
# pip install pudb
# python -m pudb my_script.py
import pudb
def run():
pudb.set_trace()
data = [1, 2, 3]
return sum(data)Inaktivera brytpunkter i CI
Ange PYTHONBREAKPOINT=0 för att göra alla anrop till breakpoint() till no-op i CI eller produktion.
# In CI pipeline:
# export PYTHONBREAKPOINT=0
# python my_script.py
# breakpoint() is silently skippedSnabbkontroll
Vilket pdb-kommando fortsätter körningen till nästa brytpunkt?
Sammanfattning
Använd breakpoint() för att pausa körningen och öppna pdb. Centrala kommandon är n, s, c, p och q. Prova ipdb eller pudb för en mer omfattande upplevelse. Inaktivera felsökningen med PYTHONBREAKPOINT=0 i CI.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 320
Vanliga frågor
Är lektionen ”Felsökning med pdb” gratis?
Ja – hela texten till ”Felsökning med pdb” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Felsökning med pdb”?
Använd Pythons inbyggda debugger för att stega genom kod interaktivt. Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Python Academy?
Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Felsökning med pdb”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Python Academy-lektionen?
Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.