CodeGym /Kursy /Python SELF PL /Debugowanie programu

Debugowanie programu

Python SELF PL
Poziom 18 , Lekcja 2
Dostępny

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:

  1. GDB: GNU Debugger dla C, C++ i innych języków programowania.
  2. PDB: Wbudowany debuger Pythona.
  3. Visual Studio Debugger: Debuger wbudowany w Microsoft Visual Studio.
  4. 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 :)

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION