Jeżeli program "nie działa prawidłowo" podczas uruchomienia, mówimy o problemach ujawniających się w czasie wykonywania (np. wyjątek, błąd logiki, niepoprawny stan danych). Do takiej diagnostyki używa się debuggera, czyli narzędzia umożliwiającego kontrolowane uruchamianie programu.
Debugger pozwala m.in.:
- ustawiać breakpointy (zatrzymanie programu w wybranym miejscu),
- wykonywać kod krok po kroku (wejście w funkcję, przejście do następnej instrukcji),
- podglądać i zmieniać wartości zmiennych,
- analizować stos wywołań oraz miejsce wystąpienia wyjątku.
Odpowiedź "konwerter" jest nieprawidłowa, bo konwerter służy do przekształcania danych lub formatów (np. plików), a nie do analizy przebiegu działania programu. Odpowiedź "linker" (konsolidator) dotyczy etapu tworzenia pliku wykonywalnego: łączy moduły/obiekty i biblioteki; jego błędy zwykle dotyczą brakujących symboli, a nie zachowania programu w runtime. Odpowiedź "kompilator" również odnosi się do etapu budowania – wykrywa głównie błędy składniowe i część błędów semantycznych przed uruchomieniem, ale nie zastępuje debuggera w analizie błędów wykonania i logicznych.
Na egzaminie warto zapamiętać prosty podział: kompilator/linker – budowanie programu, debugger – diagnoza działania programu podczas uruchomienia. Gdy w treści pojawia się "testowanie" i "nie działa prawidłowo", najczęściej chodzi o narzędzia debugowania.