Czy zdarzyło Ci się napisać kod, który nie działa tak jak powinien? Program się kompiluje, ale wyniki są nieprawidłowe? Debugger to Twój najlepszy przyjaciel w takich sytuacjach. To narzędzie pozwala „zajrzeć do środka” działającego programu i zobaczyć dokładnie co się dzieje.
Dlaczego debugowanie jest ważne?
Każdy programista popełnia błędy – to normalne. Różnica między początkującym a doświadczonym programistą polega na tym, jak szybko potrafi te błędy znaleźć i naprawić. Debugger to jak RTG dla lekarza – pozwala zobaczyć co się dzieje „w środku”.
Co się nauczysz:
- Jak ustawić punkt zatrzymania (breakpoint)
- Jak uruchomić program w trybie debugowania
- Jak przeglądać wartości zmiennych
- Jak poruszać się krok po kroku przez kod
- Jak naprawić typowe błędy dzięki debuggerowi
Czym jest debugger?
Twój pierwszy breakpoint
Breakpoint (punkt zatrzymania) to miejsce w kodzie gdzie chcesz zatrzymać program do debugowania.
Jak ustawić breakpoint:
1. Otwórz swój kod w IntelliJ IDEA
2. Znajdź linię gdzie chcesz zatrzymać program
3. Kliknij w szarym marginesie po lewej stronie numeru linii
4. Pojawi się czerwona kropka – to Twój breakpoint!
public class Calculator { public static void main(String[] args) { int a = 10; int b = 5; int result = a + b; // ← Ustaw breakpoint tutaj System.out.println("Wynik: " + result); } }
Uruchamianie w trybie debug
Teraz gdy masz ustawiony breakpoint, musisz uruchomić program w specjalnym trybie:
1. Zamiast zielonej strzałki „Run”, kliknij zieloną strzałkę z robaczkiem „Debug”
2. Możesz też użyć skrótu klawiszowego: Shift + F9
3. Program uruchomi się i zatrzyma na Twoim breakpoincie
Przeglądanie zmiennych
To najważniejsza część debugowania – możesz zobaczyć wartości wszystkich zmiennych:
Panel Variables:
– Po lewej stronie zobaczysz panel „Variables”
– Wszystkie zmienne w aktualnym zasięgu są tam wylistowane
– Obok każdej zmiennej widzisz jej aktualną wartość
Sprawdzanie wartości na żywo:
– Najedź myszką na dowolną zmienną w kodzie
– Pojawi się tooltip z jej wartością
– To szybki sposób na sprawdzenie konkretnej wartości
public class Example { public static void main(String[] args) { String name = "Jan"; int age = 25; boolean isStudent = true; // Zatrzymaj tutaj i sprawdź wszystkie zmienne } }
Poruszanie się krok po kroku
Gdy program jest zatrzymany, możesz kontrolować jego wykonanie:
Główne przyciski debuggera:
Przycisk | Skrót | Co robi |
---|---|---|
Step Over (F8) | F8 | Przechodzi do następnej linii |
Step Into (F7) | F7 | „Wchodzi” do wywoływanej metody |
Step Out (Shift+F8) | Shift+F8 | „Wychodzi” z aktualnej metody |
Resume (F9) | F9 | Kontynuuje do następnego breakpointa |
Step Into to jak wejście do pokoju na tym samym poziomie.
Step Out to jak wyjście z pokoju z powrotem na schody.
Praktyczny przykład debugowania
Spróbujmy znaleźć błąd w tym kodzie:
public class BuggyCalculator { public static void main(String[] args) { int[] numbers = {1, 2, 3, 4, 5}; int sum = 0; for (int i = 0; i <= numbers.length; i++) { // ← Breakpoint tutaj sum += numbers[i]; } System.out.println("Suma: " + sum); } }
Kroki debugowania:
1. Ustaw breakpoint na linii z pętlą for
2. Uruchom w trybie debug (Shift+F9)
3. Obserwuj zmienną i w każdej iteracji
4. Zauważysz że gdy i będzie równe 5, program spróbuje odczytać numbers[5]
5. Ale tablica ma tylko indeksy 0-4!
Najczęstsze błędy które łapie debugger
Typowe problemy dla początkujących:
- NullPointerException: Zmienna ma wartość null a Ty próbujesz jej użyć
- ArrayIndexOutOfBoundsException: Próbujesz odczytać element tablicy który nie istnieje
- Nieskończone pętle: Zmienna w pętli nigdy nie zmienia wartości
- Błędne warunki: if(x = 5) zamiast if(x == 5)
- Problemy z zakresem zmiennych: Zmienna nie jest dostępna tam gdzie myślisz
Przydatne skróty klawiszowe
- Ctrl+F8: Przełącz breakpoint na aktualnej linii
- Ctrl+Shift+F8: Wyświetl wszystkie breakpointy
- Alt+F8: Evaluate Expression (wykonaj kod na żywo)
- F8: Step Over
- F9: Resume Program
Tak, ale tylko gdy jest aktywny. Program uruchomiony normalnie (nie w trybie debug) działa z pełną prędkością.
Upewnij się że uruchamiasz program w trybie debug (zielona strzałka z robaczkiem), nie w normalnym trybie run.
Oznacza że zmienna nie została zainicjalizowana lub celowo ustawiona na wartość pustą. To częsta przyczyna błędów NullPointerException.
Użyj warunkowych breakpointów - kliknij prawym na breakpoint i ustaw warunek (np. i > 95). Program zatrzyma się tylko gdy warunek będzie spełniony.
Tak! W panelu Variables kliknij prawym przyciskiem na zmienną i wybierz "Set Value". Możesz testować różne scenariusze bez restartowania programu.
Przydatne zasoby:
- Oficjalna dokumentacja IntelliJ IDEA - Debugging
- JetBrains - Using Breakpoints
- Oracle Java Troubleshooting Guide
🚀 Zadanie dla Ciebie
Napisz prosty program który oblicza średnią z tablicy liczb, ale celowo wprowadź błąd (np. dzielenie przez 0 lub błędny warunek pętli). Użyj debuggera żeby znaleźć i naprawić błąd. Obserwuj jak zmieniają się wartości zmiennych krok po kroku!
Czy udało Ci się już złapać swój pierwszy błąd dzięki debuggerowi? Podziel się w komentarzu jakie było Twoje pierwsze doświadczenie z debugowaniem!