KWALIFIKACJA ELM6 - STYCZEŃ 2018

PYTANIE NR 32.
Którym programem należy się posłużyć w celu zlokalizowania instrukcji, która powoduje błędne działanie programu?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Debugger służy do uruchamiania programu pod kontrolą: wykonywania krokowego, ustawiania punktów przerwania oraz podglądu wartości zmiennych i stosu wywołań. Dzięki temu można wskazać konkretną instrukcję lub fragment kodu, przy którym pojawia się błąd. Kompilator, asembler i deasembler nie są narzędziami do takiej diagnostyki wykonania.

Pełne wyjaśnienie:

Do zlokalizowania instrukcji powodującej błędne działanie programu używa się debuggera. Debugger pozwala obserwować program podczas wykonywania, a nie tylko go przetwarzać.

Typowe możliwości debuggera, które prowadzą do znalezienia błędnej instrukcji:

  • wykonywanie krokowe (instrukcja po instrukcji) i sprawdzenie, w którym miejscu pojawia się nieprawidłowy stan,
  • punkty przerwania (breakpointy), aby zatrzymać program w podejrzanym fragmencie kodu,
  • podgląd zmiennych, rejestrów lub pamięci (zależnie od środowiska),
  • analiza stosu wywołań, co ułatwia dojście do źródła błędnego wywołania funkcji/procedury.

Odpowiedź "Debuggerem." jest więc poprawna, bo jako jedyna dotyczy narzędzia przeznaczonego do diagnostyki działania programu w czasie wykonania.

Dlaczego pozostałe odpowiedzi nie pasują:

  • "Asemblerem." — asembler służy do tłumaczenia kodu asemblera na kod maszynowy. Nie jest narzędziem, którego podstawowym celem jest wskazanie instrukcji powodującej błąd logiczny lub wykonania.
  • "Kompilatorem." — kompilator tłumaczy kod źródłowy na postać wynikową (np. plik wykonywalny). Może zgłaszać błędy składni lub typów, ale nie służy do śledzenia przebiegu programu i wyszukiwania miejsca, w którym program działa nieprawidłowo.
  • "Deasemblerem." — deasembler odtwarza postać asemblerową z kodu maszynowego. Jest przydatny w analizie binariów, ale sam w sobie nie zastępuje debuggera w zadaniu "znajdź instrukcję powodującą błędne działanie podczas wykonywania".

W praktyce (także w systemach mechatronicznych) umiejętność użycia debuggera przekłada się na szybsze uruchamianie i serwis: można porównać oczekiwane i rzeczywiste wartości sygnałów/zmiennych oraz potwierdzić, w którym warunku lub instrukcji logika sterowania "skręca" w złą stronę.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Debugger to narzędzie do diagnozowania działania programu w czasie wykonania. Umożliwia zatrzymywanie programu, wykonywanie go krok po kroku, ustawianie punktów przerwania oraz podgląd zmiennych i stosu wywołań. Dzięki temu można znaleźć miejsce w kodzie, które powoduje błąd.
Najczęściej łączy się kilka technik: ustawiasz punkt przerwania w podejrzanym miejscu, uruchamiasz program, a potem wykonujesz go krokowo. Obserwując zmienne i warunki, widzisz moment, w którym wartości stają się niepoprawne lub program trafia do niewłaściwej gałęzi.
Kompilator przede wszystkim tłumaczy kod źródłowy na kod wynikowy i wykrywa błędy na etapie kompilacji (np. składnia, typy). Nie śledzi jednak standardowo przebiegu programu w czasie działania, więc zwykle nie wskaże konkretnej instrukcji, przy której występuje błąd logiczny lub wykonania.
Debugger kontroluje uruchomiony program: pozwala go zatrzymywać, wykonywać krokowo i oglądać stan (zmienne, rejestry, pamięć). Deasembler przekształca kod maszynowy na postać asemblerową w celu analizy binariów. To inne cele: diagnostyka wykonania vs analiza reprezentacji kodu.
Punktów przerwania używa się, gdy chcesz zatrzymać program w konkretnym miejscu bez wykonywania całego kodu krokowo od początku. To przyspiesza analizę: program dochodzi do interesującego fragmentu, zatrzymuje się, a ty możesz sprawdzić wartości zmiennych i dalszy przebieg.
Częste pomyłki to: ustawianie breakpointów w złym miejscu, brak weryfikacji wartości wejściowych, mylenie objawu z przyczyną (naprawa "skutków" w innym miejscu), oraz pomijanie sprawdzenia ścieżki wykonania (warunki if/else, pętle). Pomaga plan: hipoteza → test w debuggerze.
Może, ale zwykle w szczególnych przypadkach (niski poziom, systemy wbudowane, analiza wydajności lub błędów bliskich sprzętowi). Asembler nie jest jednak podstawowym narzędziem do wskazywania "błędnej instrukcji" w typowym procesie debugowania. Najpierw stosuje się debugger i analizę logiki.
W mechatronice program steruje ruchem i sygnałami I/O, więc błąd w instrukcji może powodować niewłaściwą reakcję układu. Debugowanie pomaga sprawdzić, czy program poprawnie interpretuje sygnały z czujników, czy warunki przejść są spełnione oraz w którym miejscu sterowanie wybiera złą ścieżkę działania.
Zatrzymaj program tuż przed instrukcją warunkową, a następnie podejrzyj wartości zmiennych użytych w warunku. Wykonaj krok do przodu i zobacz, którą ścieżkę wybrał program. Jeśli wartości są inne niż oczekiwane, cofnij się w analizie do miejsca, gdzie zmienne były obliczane lub modyfikowane.
Ucz się ról narzędzi: kompilator (tłumaczenie), debugger (diagnoza wykonania), asembler (tłumaczenie na kod maszynowy), deasembler (analiza binariów). Dobrą metodą są krótkie ćwiczenia: celowo wprowadź błąd do programu i spróbuj znaleźć go krokowo, używając breakpointów i podglądu zmiennych.
info

Około 57% zdających odpowiada poprawnie na to pytanie. średnie

W praktyce zawodowej kluczowe jest to, że debugger służy do uruchamiania programu pod kontrolą: wykonywania krokowego, ustawiania punktów przerwania oraz podglądu wartości zmiennych i stosu wywołań.

Źródła:

  • GNU Project: GDB Documentation – "Debugging with GDB" (manual), https://sourceware.org/gdb/documentation/ (dostęp: 2026-02-27)
  • Microsoft Learn – Visual Studio Debugger documentation (breakpoints, stepping, variable inspection), https://learn.microsoft.com/en-us/visualstudio/debugger/ (dostęp: 2026-02-27)
  • Wikipedia – "Debugger", opis roli debuggera i typowych funkcji (stepping, breakpoints), https://en.wikipedia.org/wiki/Debugger (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja wybranego debuggera (np. GDB lub debugger środowiska IDE) – uruchamianie krokowe i breakpointy
  • Materiały o cyklu: kompilacja–linkowanie–uruchomienie–debugowanie
  • Ćwiczenia praktyczne: celowe wprowadzenie błędu i lokalizacja miejsca błędu w debuggerze

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego