0Pricing
Python Academy · Lekcja

Debugowanie za pomocą pdb

Proszę używać wbudowanego debuggera Pythona do interaktywnego wykonywania kodu krok po kroku.

Debugowanie za pomocą pdb to bezpłatna lekcja Python Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Python Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Python Academy zawiera 4 lekcji w sumie.

Czym jest pdb

pdb to wbudowany interaktywny debugger języka Python. Umożliwia wstrzymywanie wykonywania, sprawdzanie zmiennych i przechodzenie przez kod wiersz po wierszu.

import pdb

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

faulty(5)

breakpoint() — Python 3.7+

breakpoint() to wbudowany skrót dla import pdb; pdb.set_trace(). Uwzględnia zmienną środowiskową PYTHONBREAKPOINT.

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

process([1, -2, 3])

Podstawowe polecenia pdb

Najważniejsze polecenia: n (następny wiersz), s (wejście do funkcji), c (kontynuowanie), q (wyjście), p expr (wyświetlenie), l (wyświetlenie kodu źródłowego).

# 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

Sprawdzanie zmiennych

Użyj p, aby wyświetlić wyrażenie, pp, aby wyświetlić je w czytelniejszej formie, oraz locals(), aby zobaczyć wszystkie zmienne lokalne.

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

Warunkowe breakpointy

Ustaw warunkowe breakpointy, aby wstrzymywać wykonywanie tylko wtedy, gdy warunek jest prawdziwy, i uniknąć wielokrotnego przechodzenia przez kod.

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

Debugowanie po awarii

Stan bezpośrednio po wystąpieniu nieobsługiwanego wyjątku można sprawdzić za pomocą pdb.post_mortem() albo uruchomić skrypt poleceniem 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

Obserwowanie zmiennych za pomocą w i where

w (where) wyświetla bieżący ślad stosu wywołań, dzięki czemu wiadomo, jak nastąpiło przejście do bieżącej ramki.

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

Przechodzenie między ramkami

u (up) i d (down) służą do przechodzenia między ramkami stosu wywołań, aby można było sprawdzać zmienne w funkcjach wywołujących.

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

ipdb — rozszerzony debugger

ipdb rozszerza pdb o funkcje IPythona: uzupełnianie za pomocą klawisza Tab, podświetlanie składni i polecenia magiczne.

# pip install ipdb
import ipdb

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

calc(7)

pudb — wizualny debugger terminalowy

pudb udostępnia pełnoekranowy debugger TUI w terminalu, z panelami kodu, zmiennych i stosu.

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

import pudb

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

Wyłączanie punktów przerwania w CI

Ustawienie PYTHONBREAKPOINT=0 sprawia, że wszystkie wywołania breakpoint() w CI lub produkcji nie wykonują żadnej operacji.

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

Szybkie sprawdzenie

Jakie polecenie pdb wznawia wykonywanie do następnego punktu przerwania?

Podsumowanie

Za pomocą breakpoint() można wstrzymać wykonywanie i przejść do pdb. Podstawowe polecenia to: n, s, c, p, q. Aby uzyskać bogatsze możliwości, warto wypróbować ipdb lub pudb. W CI debugger można wyłączyć za pomocą PYTHONBREAKPOINT=0.

Często zadawane pytania

Czy lekcja „Debugowanie za pomocą pdb” jest bezpłatna?

Tak — pełny tekst „Debugowanie za pomocą pdb” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Python Academy, przejdź na CoddyKit PRO. Kurs Python Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Debugowanie za pomocą pdb”?

Proszę używać wbudowanego debuggera Pythona do interaktywnego wykonywania kodu krok po kroku. Ćwiczysz Python Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Python Academy?

Nie wymagamy żadnego doświadczenia. Python Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Debugowanie za pomocą pdb”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Python Academy?

Tak. Każda lekcja Python Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Podstawy modułu logging
  2. Handlery, formatery i filtry
  3. Logowanie strukturalne
  4. Debugowanie za pomocą pdb
← Powrót do Python Academy