KWALIFIKACJA INF2 + INF3 - STYCZEŃ 2010

PYTANIE NR 26.
Podczas testowania nowego programu okazało się, że nie działa on prawidłowo. Jakiego narzędzia należy użyć do wykrywania błędów wykonania?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Debugger służy do wykrywania i analizowania błędów podczas wykonywania programu: pozwala uruchamiać kod krok po kroku, ustawiać pułapki (breakpointy) i podglądać wartości zmiennych. Kompilator i linker dotyczą etapu budowania, a konwerter zmiany formatu danych, nie diagnozy runtime.

Pełne wyjaśnienie:

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.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Debugger to narzędzie do analizowania działania programu w trakcie uruchomienia. Umożliwia zatrzymywanie programu w wybranych miejscach, wykonywanie kodu krok po kroku, podgląd zmiennych i stosu wywołań oraz lokalizowanie przyczyn błędów wykonania i błędów logicznych.
Błąd kompilacji pojawia się podczas budowania programu (np. błąd składni), zanim aplikacja się uruchomi. Błąd wykonania występuje dopiero w trakcie działania (np. wyjątek, dzielenie przez zero, null). Do analizy błędów wykonania typowo używa się debuggera.
Kompilator wykrywa głównie problemy, które da się stwierdzić statycznie (składnia, typy, część ostrzeżeń). Wiele usterek ujawnia się dopiero przy konkretnych danych wejściowych i przebiegu programu. Debugger pozwala obserwować stan aplikacji w runtime i znaleźć źródło problemu.
Najczęściej sprawdzane są: breakpoint (zatrzymanie w linii kodu), uruchomienie krokowe (step over/into/out), podgląd zmiennych (watch), oraz sprawdzenie stosu wywołań. Te funkcje pomagają ustalić, gdzie i dlaczego program zaczyna działać nieprawidłowo.
Breakpoint to punkt zatrzymania programu w debuggerze. Używa się go, gdy chcesz przerwać wykonanie przed podejrzanym fragmentem kodu i sprawdzić wartości zmiennych lub przebieg instrukcji. To szczególnie pomocne przy błędach logicznych i trudnych do odtworzenia problemach.
Nie. Linker (konsolidator) działa na etapie tworzenia pliku wykonywalnego i łączenia modułów oraz bibliotek. Jego typowe problemy to brakujące symbole lub konflikty definicji. Błędy wykonania diagnozuje się w trakcie uruchomienia, więc właściwym narzędziem jest debugger.
Debugerem łatwo znaleźć wyjątki po stronie serwera, niepoprawne wartości zmiennych, złe warunki w instrukcjach oraz błędy w przepływie programu. W praktyce w aplikacjach webowych używa się debugowania backendu i narzędzi przeglądarki do analizy działania skryptów po stronie klienta.
Logowanie bywa lepsze, gdy problem występuje sporadycznie, na środowisku produkcyjnym lub w miejscu, gdzie nie da się łatwo podłączyć debuggera. Debugger jest świetny lokalnie i w kontrolowanych warunkach testowych, ale logi pomagają odtworzyć zdarzenia z czasu działania systemu.
Częsta pułapka to mylenie etapów: kompilator i linker dotyczą budowania programu, a pytanie mówi o "nie działa prawidłowo" podczas testów (runtime). Druga pułapka to wybór "konwertera", bo brzmi technicznie, choć dotyczy transformacji formatów, a nie diagnozy działania kodu.
Powtórz różnice między błędami: składniowymi, kompilacji, linkowania i wykonania. Przećwicz w IDE ustawianie breakpointów, uruchamianie krokowe i podgląd zmiennych. Zwracaj uwagę na słowa w treści: "podczas uruchomienia", "wykonania", "testowania" zwykle wskazują na debugger.
info

To pytanie poprawnie rozwiązuje 76% zdających egzamin. średnio łatwe

Eksperci podkreślają: "Debugger służy do wykrywania i analizowania błędów podczas wykonywania programu: pozwala uruchamiać kod krok po kroku, ustawiać pułapki (breakpointy) i podglądać wartości zmiennych."

Źródła:

  • Microsoft Learn – Visual Studio Debugging (dokumentacja funkcji debuggera), https://learn.microsoft.com/en-us/visualstudio/debugger/ (dostęp: 2026-03-01)
  • GNU Project – GDB: The GNU Project Debugger (dokumentacja debuggera), https://www.gnu.org/software/gdb/documentation/ (dostęp: 2026-03-01)
  • Wikipedia – Debugger (opis narzędzia i zastosowań), https://en.wikipedia.org/wiki/Debugger (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja IDE (np. funkcje debuggera: breakpoint, step over/into, watch)
  • Podstawy narzędzi łańcucha budowania: kompilator i konsolidator/linker
  • Wprowadzenie do rodzajów błędów: składniowe, kompilacji, linkowania, wykonania, logiczne

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego