Debugger to narzędzie programistyczne używane do diagnozowania problemów w działającym programie, czyli do tzw. analizy dynamicznej. Oznacza to, że program jest uruchomiony (albo uruchamiany pod kontrolą debuggera), a programista obserwuje i kontroluje jego wykonanie.
Typowe możliwości debuggera to m.in.:
- ustawianie punktów przerwania (breakpointów) i zatrzymywanie programu w wybranym miejscu,
- krokowe wykonywanie instrukcji (step into/over/out),
- podgląd i zmiana wartości zmiennych w trakcie działania,
- analiza stosu wywołań (call stack) oraz wątków,
- identyfikacja miejsc, w których występują wyjątki lub błędy wykonania.
Odpowiedź "dynamiczna analiza uruchomionego programu w celu wykrycia przyczyn nieprawidłowego działania" jest poprawna, bo dokładnie opisuje istotę debugowania: szukanie źródła problemu nie w samym tekście kodu, lecz poprzez obserwację rzeczywistego przebiegu wykonania.
Pozostałe propozycje dotyczą innych narzędzi lub etapów pracy:
- "wykrywanie błędów składniowych … w kodzie źródłowym" opisuje głównie kompilator, interpreter lub analizator składni w IDE (analiza statyczna lub kompilacja), a nie debugger.
- "łączenie plików bibliotek … w plik wykonywalny" to rola linkera, czyli etapu budowania programu po kompilacji.
- "instalowanie środowiska programistycznego" to czynność administracyjna/konfiguracyjna, a nie funkcja debuggera.
Na egzaminie warto zapamiętać prostą regułę: debugger działa wtedy, gdy program działa (uruchomienie pod kontrolą), a kompilator/linker działają na plikach źródłowych i wynikach kompilacji.