Python Academy · Lektion

Felsökning med pdb

Använd Pythons inbyggda debugger för att stega genom kod interaktivt.

Lektion 4 av 413 steg

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          — quit

Inspektera 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 < 0

Felsö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.py

Visa 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 frame

ipdb — 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 skipped

Snabbkontroll

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.

Gratis att börja

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.

Alla lektioner i den här kursen

  1. Grunderna i modulen logging
  2. Handlers, formatters och filter
  3. Strukturerad loggning
  4. Felsökning med pdb
← Tillbaka till Python Academy