KWALIFIKACJA ELM2 + ELM5 - PRÓBNY

PYTANIE NR 3.
Do wykrywania błędów w programach napisanych w asemblerze służy program zwany
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Debugger to narzędzie służące do wykrywania, lokalizowania i analizowania błędów w działającym programie (także napisanym w asemblerze). Umożliwia m.in. wykonywanie kodu krokowo, ustawianie punktów przerwania oraz podgląd rejestrów i pamięci. Kompilator/assembler tłumaczy kod, a linker łączy moduły.

Pełne wyjaśnienie:

Program do wykrywania i diagnozowania błędów w programach (również w asemblerze) to debugger. Jego celem nie jest tłumaczenie kodu, lecz analiza wykonania programu i pomoc w znalezieniu miejsca, w którym pojawia się błąd logiczny lub błąd czasu wykonania.

W praktyce, szczególnie w programowaniu niskopoziomowym, debugger pozwala m.in.:

  • uruchamiać program krokowo (instrukcja po instrukcji),
  • ustawiać punkty przerwania (breakpoints), aby zatrzymać wykonanie w wybranym miejscu,
  • podglądać i porównywać rejestry procesora, flagi oraz stan pamięci,
  • obserwować zmiany wartości danych w trakcie działania programu.

Odpowiedź "kompilatorem" jest nieprawidłowa, bo kompilator dotyczy języków wysokiego poziomu i służy głównie do tłumaczenia kodu źródłowego; może wykrywać błędy składniowe/semantyczne przed uruchomieniem, ale nie zastępuje analizy działania programu. Odpowiedź "linkerem" jest błędna, ponieważ linker łączy moduły obiektowe i biblioteki w plik wykonywalny, nie służy do śledzenia wykonania instrukcji. Odpowiedź "konwerterem" także nie pasuje: konwerter zmienia format danych lub plików (np. kodowanie, format binarny), a nie diagnozuje błędów programu.

Na egzaminie warto zapamiętać prostą regułę: debugger = diagnoza podczas działania, assembler/kompilator = tłumaczenie, linker = łączenie. To rozróżnienie jest szczególnie ważne w elektronice i systemach wbudowanych, gdzie często analizuje się program na poziomie instrukcji i rejestrów.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Debugger to program do diagnozowania błędów w działającym programie. Pozwala zatrzymać wykonanie, wykonywać kod krokowo, ustawiać punkty przerwania oraz podglądać rejestry i pamięć. Dzięki temu łatwiej znaleźć miejsce i przyczynę błędu.
Kompilator (lub assembler) głównie tłumaczy kod na postać wykonywalną i wykrywa błędy na etapie translacji, np. składniowe. Debugowanie dotyczy analizy tego, co dzieje się podczas uruchomienia programu (logika, runtime), czego kompilator zwykle nie pokazuje.
Linker łączy pliki obiektowe i biblioteki w jeden plik wykonywalny. Rozwiązuje odwołania do symboli między modułami i ustala układ programu w pamięci. Nie służy do śledzenia wykonania instrukcji ani wyszukiwania błędów w działającym kodzie.
W pracy z asemblerem debugger umożliwia m.in. wykonanie krokowe instrukcji, podgląd rejestrów CPU, flag i pamięci, ustawianie breakpointów oraz obserwację zmian danych. To kluczowe przy analizie błędów logicznych i błędów ujawniających się dopiero w trakcie działania.
Punktów przerwania używa się, gdy chcesz zatrzymać program w konkretnym miejscu, zanim wystąpi błąd lub gdy chcesz sprawdzić stan rejestrów/pamięci przy wejściu do funkcji. To pozwala zawęzić obszar poszukiwań i szybciej znaleźć przyczynę problemu.
Błąd składni zwykle pojawia się przy tłumaczeniu kodu (assembler/kompilator) i wynika z niepoprawnego zapisu instrukcji lub dyrektyw. Błąd czasu wykonania ujawnia się dopiero po uruchomieniu (np. zły adres, nieprawidłowa logika). Ten drugi typ analizuje się debuggerem.
Tak. Debugger potrafi wykonywać kod maszynowy/asemblerowy instrukcja po instrukcji, pokazując zmiany w rejestrach i pamięci. To jedna z najważniejszych metod nauki i diagnozy w systemach wbudowanych oraz przy pracy blisko sprzętu.
Do znanych debuggerów należą m.in. GDB (często używany w systemach Unix/Linux), a także narzędzia do analizy programów w Windows. Na egzaminie zwykle wystarczy rozpoznać nazwę kategorii "debugger" i jej podstawową funkcję: analiza działania programu.
Konwerter to narzędzie, które zmienia format danych lub plików, np. kodowanie tekstu, format binarny czy reprezentację pliku wynikowego. Nie służy do lokalizowania błędów w wykonywanym programie. W pytaniach egzaminacyjnych bywa mylony z narzędziami toolchain.
Najczęściej mylą "wykrywanie błędów" z komunikatami kompilatora/assemblera, czyli błędami składni. Drugi błąd to utożsamianie linkera z diagnostyką, bo też jest elementem procesu budowania programu. Warto pamiętać: debugger działa na uruchomionym kodzie.
info

Około 75% zdających odpowiada poprawnie na to pytanie. średnio łatwe

W praktyce zawodowej kluczowe jest to, że debugger to narzędzie służące do wykrywania, lokalizowania i analizowania błędów w działającym programie (także napisanym w asemblerze).

Źródła:

  • GNU Project: "Debugging with GDB" (GDB Documentation) – rozdziały o breakpoints i stepping, https://sourceware.org/gdb/current/onlinedocs/gdb/ (dostęp: 2026-03-01)
  • Wikipedia (PL): "Debugger" – definicja i opis narzędzia, https://pl.wikipedia.org/wiki/Debugger (dostęp: 2026-03-01)
  • x64dbg Documentation/Repository (opis debuggera i funkcji), https://github.com/x64dbg/x64dbg (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja GDB: "Debugging with GDB" (rozdziały o breakpoints i stepping)
  • Podręcznik/rozdział o toolchain: assembler, linker, debugger w kontekście systemów wbudowanych
  • Ćwiczenia praktyczne z debugowania: krokowe wykonywanie, watch, rejestry, pamięć

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego