8.1 Pojawienie się bugów
Debugowanie oprogramowania to proces wyszukiwania i korygowania błędów lub bugów w programie. Ten proces jest najciekawszą i najważniejszą częścią tworzenia oprogramowania i pomaga zapewnić prawidłowe działanie programów.
Historia pojawienia się terminu "bug"
Termin "bug" (błąd) w kontekście programów komputerowych po raz pierwszy został użyty w latach 40. XX wieku. Choć sama koncepcja "bugów" istniała już przed pojawieniem się komputerów, oznaczając mechaniczne usterki w różnych urządzeniach.
Pierwszy udokumentowany przypadek użycia terminu "bug" w technice komputerowej miał miejsce z zespołem pracującym na komputerze Mark II na Uniwersytecie Harvarda w 1947(!) roku. Zespół odkrył, że jedno z przekaźników maszyny nie działało z powodu obecności ćmy. Usunęli owada i zapisali to w dzienniku jako "pierwszy rzeczywisty przypadek odkrycia owada" (literal bug).
Choć to nie był pierwszy przypadek użycia terminu "bug" w kontekście błędu, ten incydent stał się znany i przyczynił się do popularyzacji terminu „bug”.

Debugowanie programu
Debugowanie — to proces wyszukiwania, diagnostyki i korygowania bugów w oprogramowaniu. Proces debugowania obejmuje kilka etapów:
- Wykrycie błędu: Zidentyfikowanie objawów wskazujących na obecność błędu w programie.
- Reprodukcja błędu: Stworzenie warunków, w których błąd objawia się ponownie, aby lepiej zrozumieć jego naturę.
- Diagnoza problemu: Wykorzystanie różnych narzędzi i metod do analizy kodu i znalezienia przyczyny błędu.
- Korekta błędu: Wprowadzenie zmian w kodzie w celu usunięcia błędu.
- Testowanie: Weryfikacja poprawki i testowanie programu, aby upewnić się, że błąd został usunięty i nie pojawiły się nowe problemy.
Więc bug — to ogólna nazwa dla wszelkich błędów w programach, a debug — to proces wykrywania i usuwania tych błędów.
8.2 Narzędzia i metody debugowania
Logowanie
Dodanie logów do kodu programu pozwala śledzić jego wykonanie i otrzymywać informacje o stanie zmiennych i operacji w różnych punktach wykonania programu. Do logowania w Pythonie jest świetna biblioteka — logging
.
Przykład użycia logowania:
import logging
# Ustawienie logowania dla wyświetlania informacji debugowania
logging.basicConfig(level=logging.DEBUG)
def divide(a, b):
# Logowanie próby podziału
logging.debug(f"Podział {a} na {b}")
if b == 0:
# Logowanie błędu, jeśli b równa się 0
logging.error("Próba podziału przez zero!")
return None
# Wykonanie podziału, jeśli b nie jest 0
return a / b
result = divide(10, 2)
print(result)
Użycie debugerów (Debuggers)
Debugery — to narzędzia, które pozwalają programistom wykonywać program krok po kroku, ustawiać punkty zatrzymania (breakpoints)
, sprawdzać wartości zmiennych i zmieniać je podczas wykonywania programu.
Popularne debugery:
- GDB: GNU Debugger dla C, C++ i innych języków programowania.
- PDB: Wbudowany debuger Pythona.
- Visual Studio Debugger: Debuger wbudowany w Microsoft Visual Studio.
- PyCharm Debugger: Debuger wbudowany w IDE PyCharm dla Pythona.
Przykład użycia PDB
import pdb
def faulty_function(a, b):
pdb.set_trace() # Ustawienie punktu zatrzymania
result = a / b
return result
faulty_function(10, 0)
Kiedy program dochodzi do pdb.set_trace()
, zatrzymuje się, i możesz wykonywać polecenia debugera, takie jak next
(następny krok), print
(wyświetlanie wartości zmiennej) i inne.
Będziemy uczyć się debugowania programów na przykładzie debugera wbudowanego w PyCharm.
8.3 Użycie debug
Ogólnie debug obejmuje aktywne wykorzystanie narzędzi debugowania i praktyk do wykrywania i usuwania błędów.
Ustawianie punktów zatrzymania: Ustaw punkty zatrzymania w kodzie, aby zatrzymać wykonanie programu w interesujących Cię miejscach.
Wykonywanie krok po kroku: Wykonuj program krok po kroku, obserwując zmiany w stanie programu i wartościach zmiennych.
Analiza zmiennych: Analizuj wartości zmiennych i wyrażeń na różnych etapach wykonywania programu, aby wykryć nieprawidłowe dane lub błędy logiczne.
Korekta błędów: Wprowadź zmiany w kodzie w celu usunięcia znalezionych błędów.
Ponowne testowanie: Po usunięciu błędów przetestuj program, aby upewnić się, że błąd został usunięty i nie pojawiły się nowe problemy.
Wygląda prosto, prawda? W następnym wykładzie szczegółowo omówimy każdy etap :)
GO TO FULL VERSION