KWALIFIKACJA ELM2 + ELM5 - CZERWIEC 2008

PYTANIE NR 14.
Wykonywanie programu instrukcja po instrukcji w trybie pracy krokowej (single-step) mikroprocesora w debuggerze ma na celu
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Tryb krokowy służy do debugowania: procesor wykonuje pojedynczą instrukcję i zatrzymuje się, aby można było sprawdzić rejestry, flagi, stos i pamięć. Dzięki temu śledzi się przepływ programu i wykrywa moment pojawienia się nieprawidłowych wartości. Nie jest to tryb do przyspieszania ani do pomiaru wydajności.

Pełne wyjaśnienie:

Tryb pracy krokowej (single-step) jest jedną z podstawowych technik debugowania w systemach mikroprocesorowych i mikrokontrolerowych. Polega na wykonaniu dokładnie jednej instrukcji maszynowej, po czym procesor (we współpracy z mechanizmem debugowym) zatrzymuje wykonanie, aby programista mógł przeanalizować stan układu.

Odpowiedź "umożliwienie debugowania przez śledzenie wykonania i kontrolę stanu rejestrów oraz pamięci po każdej instrukcji" jest poprawna, bo w praktyce właśnie to robi debugger w trybie krokowym: po każdym kroku można podejrzeć rejestry, flagi, stos i wybrane obszary pamięci. Ułatwia to znalezienie instrukcji lub fragmentu kodu, po którym wartości zaczynają odbiegać od oczekiwanych, a więc pozwala diagnozować błędy logiczne i błędne sekwencje operacji.

Odpowiedź "zwiększenie szybkości wykonywania programu przez optymalizację kolejności instrukcji" jest błędna: wykonywanie krokowe z definicji spowalnia program, bo po każdej instrukcji następuje zatrzymanie i analiza stanu. Nie jest to mechanizm optymalizacji ani przyspieszania.

Odpowiedź "uniemożliwienie obsługi przerwań zewnętrznych jako podstawowy cel pracy procesora" również jest błędna. W niektórych implementacjach debuggera przerwania mogą być chwilowo maskowane, aby nie zakłócały obserwacji, ale to jest co najwyżej efekt uboczny lub ustawienie środowiska, a nie główny cel trybu krokowego.

Odpowiedź "określenie szybkości przetwarzania poszczególnych rozkazów w warunkach normalnej pracy" jest błędna, ponieważ w trybie krokowym czas wykonania jest sztucznie zaburzony przez zatrzymania i narzędzia diagnostyczne. Do pomiarów wydajności używa się liczników sprzętowych, timerów i profilerów, a nie single-step.

Wskazówka egzaminacyjna: jeśli w treści pojawia się "instrukcja po instrukcji", niemal zawsze chodzi o śledzenie przepływu programu i inspekcję stanu CPU, a nie o szybkość czy "wyłączanie przerwań".

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Tryb krokowy to sposób uruchamiania programu, w którym wykonywana jest jedna instrukcja, a potem następuje zatrzymanie. Dzięki temu w debuggerze można od razu sprawdzić rejestry, flagi i pamięć po każdym kroku, co ułatwia analizę działania kodu.
Najczęściej obserwuje się rejestry CPU, flagi, wskaźnik stosu, zawartość wybranych komórek pamięci oraz miejsce wykonania (licznik programu). To pozwala wykryć, po której instrukcji pojawiają się błędne wartości.
Ponieważ umożliwia śledzenie zmian stanu układu krok po kroku. Gdy po konkretnej instrukcji rejestr lub pamięć przyjmie nieoczekiwaną wartość, można powiązać to bezpośrednio z operacją, która ją spowodowała, i szybciej ustalić źródło problemu.
Nie. Tryb krokowy zawsze spowalnia wykonanie, bo po każdej instrukcji następuje zatrzymanie i praca debuggera. Do przyspieszania służą optymalizacje kodu, kompilatora lub zmiana algorytmu, a nie uruchamianie instrukcja-po-instrukcji.
Step Into wchodzi do wywoływanej funkcji i wykonuje jej instrukcje krokowo, a Step Over wykonuje funkcję jako całość i zatrzymuje się dopiero po powrocie. Oba tryby służą do debugowania, ale dają inny poziom szczegółowości.
Nie zawsze. W niektórych konfiguracjach debugger może chwilowo maskować przerwania, aby ułatwić obserwację stanu, ale to nie jest "główny cel" trybu krokowego. Najważniejsze jest kontrolowane wykonywanie instrukcji i możliwość inspekcji rejestrów oraz pamięci.
Do pomiaru czasu używa się timerów, liczników sprzętowych lub liczników cykli (jeśli są dostępne), a nie trybu krokowego. Single-step wprowadza przerwy i narzut debuggera, więc nie odzwierciedla normalnych warunków pracy programu w układzie.
Najczęściej mylą cel trybu krokowego z efektami ubocznymi: wybierają odpowiedzi o "szybkości" lub "przerwaniach". Częsty błąd to też utożsamienie debugowania wyłącznie z "miejscem błędu", zamiast z szerszą analizą rejestrów, pamięci i przepływu programu.
Gdy urządzenie z mikrokontrolerem działa niestabilnie i trzeba sprawdzić, co dzieje się z rejestrami i pamięcią w krytycznym fragmencie programu. Single-step pomaga prześledzić obsługę peryferiów, decyzje warunkowe i wpływ instrukcji na stan sprzętu.
Przećwicz w IDE lub GDB: ustawianie breakpointów, użycie Step Into/Over, podgląd rejestrów i pamięci oraz obserwację flag. Zwracaj uwagę, że tryb krokowy służy do diagnostyki, a nie do pomiaru wydajności. Rozwiązuj też zadania o przepływie programu i stosie.
info

Statystycznie 50% uczniów zna prawidłową odpowiedź. trudne

Według specjalistów z branży: "Tryb krokowy służy do debugowania: procesor wykonuje pojedynczą instrukcję i zatrzymuje się, aby można było sprawdzić rejestry, flagi, stos i pamięć."

Źródła:

  • GNU gdb documentation: "Debugging with GDB" – sekcja o poleceniu/trybie "step" i pojedynczych krokach wykonania, https://sourceware.org/gdb/current/onlinedocs/gdb/ (dostęp: 2026-02-27)
  • ARM Developer – dokumentacja mechanizmów debugowania (Cortex-M) i pojęcia single-step/breakpoint w kontekście debug, https://developer.arm.com/documentation (dostęp: 2026-02-27)
  • Microchip MPLAB X IDE User’s Guide – opis funkcji debugowania Step Into/Step Over i obserwacji rejestrów/pamięci, https://microchipdeveloper.com/mplabx:start (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja debuggera używanego w laboratorium (np. GDB, środowisko IDE producenta MCU)
  • Podstawy architektury mikroprocesora/mikrokontrolera: rejestry, flags, stos
  • Ćwiczenia praktyczne: uruchamianie kodu w trybie step/step into/step over i obserwacja pamięci

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego