Last modified: September 18, 2024

This article is written in: 🇵🇱

Debugowanie

Debugowanie to fundamentalny proces w tworzeniu oprogramowania, polegający na identyfikowaniu, analizowaniu i usuwaniu błędów (bugów) w kodzie źródłowym programu. Błędy te mogą prowadzić do nieprawidłowego działania aplikacji, awarii systemu lub nieoczekiwanych rezultatów. Debugowanie umożliwia programistom dokładne prześledzenie działania programu, co pozwala na zrozumienie, dlaczego program nie działa zgodnie z oczekiwaniami.

Proces ten jest niezbędny na każdym etapie cyklu życia oprogramowania, od fazy rozwoju po utrzymanie i aktualizacje. Dzięki debugowaniu programiści mogą:

Główne funkcje debuggera

Debugger to narzędzie oferujące zaawansowane funkcje ułatwiające analizę i naprawę kodu. Oto szczegółowy opis jego głównych funkcji:

Punkty przerwania (breakpoints):

Krokowanie (stepping):

Inspekcja stanu:

Modyfikacja stanu:

Zalety korzystania z debuggera

Korzystanie z debuggera przynosi wiele korzyści, zarówno dla początkujących, jak i doświadczonych programistów:

Debugger w środowiskach programistycznych (IDE)

Zintegrowane środowiska programistyczne (IDE) oferują zaawansowane narzędzia debugowania, które są nieodłączną częścią nowoczesnego procesu tworzenia oprogramowania. Oto niektóre z ich funkcji:

Debugger wbudowany w Pythonie - pdb

pdb jest wbudowanym debuggerem Pythona, który, mimo swojej prostoty, oferuje ma wiele do zaoferowania:

Uruchomienie debuggera w kodzie

Istnieje kilka sposobów na rozpoczęcie sesji debugowania z użyciem pdb:

Bezpośrednie wywołanie z linii poleceń:

python -m pdb script.py

Wstawienie punktu przerwania w kodzie:

Od Pythona 3.7 można użyć wbudowanej funkcji:

breakpoint()  # Automatycznie uruchamia domyślny debugger

Lub tradycyjnie:

import pdb
pdb.set_trace()

Debugowanie wyjątków:

Aby debugger uruchamiał się automatycznie przy nieobsłużonych wyjątkach:

import sys
import pdb

def excepthook(type, value, traceback):
    pdb.post_mortem(traceback)

sys.excepthook = excepthook

Kontrolowanie wykonania programu w pdb

Podczas sesji z pdb masz dostęp do szeregu poleceń:

Nawigacja:

Informacje o stanie:

Zarządzanie breakpointami:

Pomoc i wyjście:

Podgląd i edycja zmiennych w pdb

pdb pozwala na interaktywną pracę z kodem:

Wyświetlanie wartości:

p variable_name  # Wyświetla wartość zmiennej

Zmiana wartości:

variable_name = new_value  # Ustawia nową wartość zmiennej

Wykonywanie wyrażeń:

Możesz wykonywać dowolne wyrażenia Pythona:

p len(my_list)  # Wyświetla długość listy

Wywoływanie funkcji:

Uważaj jednak na skutki uboczne wywoływanych funkcji:

p my_function()  # Wywołuje funkcję i wyświetla jej wynik

Ustawianie dodatkowych punktów zatrzymania

Podczas debugowania możesz potrzebować zatrzymać program w nowych miejscach:

Ustawianie breakpointów:

b 25  # Ustawia breakpoint na linii 25 bieżącego pliku
b my_module.py:10  # Ustawia breakpoint w pliku 'my_module.py' na linii 10
b my_function  # Ustawia breakpoint na początku funkcji 'my_function'

Warunkowe breakpointy:

b 30, x > 5  # Zatrzyma program na linii 30, gdy 'x' jest większe od 5

Wyświetlanie breakpointów:

b  # Wyświetla listę wszystkich breakpointów

Usuwanie breakpointów:

cl  # Usuwa wszystkie breakpointy
cl 2  # Usuwa breakpoint numer 2

Warunkowe zatrzymywanie

Warunkowe breakpointy są niezwykle przydatne w sytuacjach, gdy błąd występuje tylko przy określonych wartościach zmiennych lub w specyficznych warunkach.

Przykład zastosowania:

Jeśli pętla iteruje 1000 razy, ale błąd występuje tylko dla i == 500, ustawienie breakpointa warunkowego pozwala na zatrzymanie programu dokładnie w tym momencie:

b loop.py:45, i == 500

Debugowanie złożonych warunków:

Możesz używać złożonych wyrażeń logicznych:

b process_data, len(data) > 100 and error_flag

Praktyczne wskazówki

Spis Treści

    Debugowanie
    1. Główne funkcje debuggera
    2. Zalety korzystania z debuggera
    3. Debugger w środowiskach programistycznych (IDE)
    4. Debugger wbudowany w Pythonie - pdb
      1. Uruchomienie debuggera w kodzie
    5. Kontrolowanie wykonania programu w pdb
    6. Podgląd i edycja zmiennych w pdb
    7. Ustawianie dodatkowych punktów zatrzymania
    8. Warunkowe zatrzymywanie
    9. Praktyczne wskazówki