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 — quitSprawdzanie 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 < 0Debugowanie 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.pyObserwowanie 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 frameipdb — 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 skippedSzybkie 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
- Podstawy modułu logging
- Handlery, formatery i filtry
- Logowanie strukturalne
- Debugowanie za pomocą pdb