CodeGym /Kursy /Frontend SELF PL /Debugowanie programu

Debugowanie programu

Frontend SELF PL
Poziom 38 , Lekcja 2
Dostępny

9.1 Pojawienie się bugów

Debugowanie oprogramowania to proces wyszukiwania i naprawiania błędów lub bugów w programie. To najbardziej interesująca część rozwoju oprogramowania, która pomaga zapewnić poprawne działanie programów.

Historia powstania terminu "bug"

Termin "bug" (błąd) w kontekście programów komputerowych zaczął być używany w latach 40. XX wieku. Chociaż 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 w zespole pracującym przy komputerze Mark II na Uniwersytecie Harvarda w 1947 roku. Zespół odkrył, że jedno z przekaźników maszyny nie działało z powodu ćmy, która się w nim znalazła. Usunęli owada i zapisali to w dzienniku jako "pierwszy rzeczywisty przypadek odkrycia owada" (literal bug).

Chociaż nie był to pierwszy przypadek użycia terminu "bug" do oznaczenia błędu, ten incydent stał się znanym i przyczynił się do popularności terminu „bug”.

bug

Debugowanie programu

Debugowanie to proces wyszukiwania, diagnozowania i naprawiania bugów w oprogramowaniu. Proces debugowania obejmuje kilka etapów:

  1. Wykrycie błędu: określenie objawów wskazujących na istnienie błędu w programie.
  2. Odtworzenie błędu: stworzenie warunków, w których błąd ponownie się ujawni, aby lepiej zrozumieć jego naturę.
  3. Diagnoza problemu: stosowanie różnych narzędzi i metod analizy kodu w celu znalezienia przyczyny błędu.
  4. Naprawa błędu: wprowadzanie zmian w kodzie w celu wyeliminowania błędu.
  5. Testowanie: sprawdzenie 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 eliminowania tych błędów.

9.2 Narzędzia i metody debugowania

Logowanie

Dodanie logów w kodzie programu pozwala śledzić jego wykonanie i uzyskiwać informacje o stanie zmiennych i operacji w różnych punktach wykonania programu. Do logowania w JavaScript jest świetna biblioteka — winston.

Przykład użycia logowania:

JavaScript
    
      const { createLogger, format, transports } = require('winston');

      // Tworzymy logger z poziomem debug
      const logger = createLogger({  level: 'debug' });

      // Funkcja dzielenia
      function divide(a, b) {
        logger.debug(`Dzielimy ${a} przez ${b}`);
        if (b === 0) {
          logger.error("Próba dzielenia przez zero!");
          return null;
        }
        return a / b;
      }

      // Przykład użycia funkcji
      const result = divide(10, 2);
      console.log(result); // Wyświetli: 5
    
  

Użycie debuggera

Debuggery 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 dla JavaScript:

  • Chrome DevTools: wbudowany debugger w przeglądarce Google Chrome
  • Firefox Developer Tools: wbudowany debugger w przeglądarce Mozilla Firefox
  • Node.js Debugger: wbudowany debugger dla serwerowego JavaScript w Node.js
  • Visual Studio Code Debugger: debugger wbudowany w edytor Visual Studio Code

Przykład użycia debuggera w Node.js:

JavaScript
    
      // Import wbudowanego modułu debugowania
      const { inspect } = require('util');

      // Przykład funkcji z błędem
      function faultyFunction(a, b) {
        debugger; // Ustawienie punktu zatrzymania
        let result = a / b;
        return result;
      }

      // Wywołanie funkcji z błędem
      console.log(faultyFunction(10, 0));
    
  

Kiedy program osiąga debugger, zatrzymuje się, a ty możesz używać komend debuggera, takich jak krok naprzód (step over), wejście do środka (step into), wyjście (step out), sprawdzanie wartości zmiennych i inne.

Będziemy uczyć się debugowania programów na przykładzie debuggera wbudowanego w Intellij IDEA (wymagana wersja Ultimate Edition).

9.3 Użycie debug

W ogólnym zarysie debugowanie obejmuje aktywne używanie narzędzi i praktyk debugowania w celu wykrycia i eliminacji błędów.

Kroki debugowania:

  1. Ustawienie punktów zatrzymania: ustaw punkty zatrzymania w kodzie, aby zatrzymać wykonanie programu w interesujących cię miejscach.
  2. Wykonanie krokowe: wykonuj program krok po kroku, obserwując zmiany w stanie programu i wartości zmiennych.
  3. Analiza zmiennych: badaj wartości zmiennych i wyrażeń na różnych etapach wykonania programu, aby wykrywać nieprawidłowe dane lub błędy logiczne.
  4. Naprawa błędów: wprowadź zmiany w kodzie w celu wyeliminowania znalezionych błędów.
  5. Ponowne testowanie: po naprawieniu błędów przetestuj program, aby upewnić się, że błąd został usunięty i że nie pojawiły się nowe problemy.

Wydaje się proste, prawda? O tym dokładniej krok po kroku opowiemy sobie na następnym wykładzie :)

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