6837093804

6837093804



Systemy wbudowane

Rozdział 2

DebuggerGDB

2.1.    Wstęp

GNU Debugger (gdb) jest narzędziem umożliwiającym śledzenie wykonania programu w trybie krokowym co pozwala na łatwe i szybkie wykrywanie oraz usuwanie błędów znajdujących się w kodzie programu. Jest to narzędzie pracujące w trybie tekstowym co umożliwia pracę na zdalnych komputerach nie wspierających graficznego interfejsu użytkownika. Program wchodzi w skład środowiska programistycznego GNU Toolchain i wspiera wszystkie architektury docelowe obsługiwane przez to środowisko.

2.2.    Podstawy obsługi aplikacji gdb

Przygotowanie pliku binarnego

Każdy program może zostać uruchomiony w trybie krokowym z wykorzystaniem debuggera gdb jednakże odpowiednie przygotowanie pliku wynikowego na etapie kompilacji znacznie ułatwia proces analizy. Aplikacja powinna być skompilowana z dodatkowym parametrem (w przypadku kompilatora z pakietu GNU Toolchain jest to parametr -g) dołączającym dodatkowe informacje wykorzystywane przez debugger takie jak nazwy zmiennych czy funkcji. Brak tych informacji powoduje, że aplikacja nie jest w stanie poprawnie interpretować danych zawartych w pliku obiektowym i analiza programu jest możliwa tylko na poziomie kodu asemblera. Dodatkowo, należy pamiętać, że użycie optymalizacji na etapie kompilacji może spowodować usunięcie niektórych zmiennych, rozwinięcie funkcji w miejscu wywołania oraz zmianę kolejności wykonywanych instrukcji. Tego typu operacje powodują rozsynchronizowanie kodu źródłowego aplikacji i zawartości pliku obiektowego co prowadzi do „dziwnych” zachowań debuggera takich jak próby wizualizacji wykonania nieistniejących linii kodu czy wywołań nieistniejących funkcji.

Analizowanie aplikacji z wykorzystaniem programu gdb

W celu rozpoczęcia sesji debuggera należy uruchomić program gdb podając jako parametr nazwę pliku wykonywalnego. Jeżeli aplikacja oczekuje parametrów wejściowych z linii poleceń podaje się je po uruchomieniu środowiska za pomocą polecenia set args. Sesję debuggera kończy się za pomocą polecenia quit [q]. Dodatkowo, za pomocą polecenia help możliwe jest uzyskanie szczegółowych informacji na temat poszczególnych komend np.: help break.

Możliwe jest uruchomienie aplikacji w trybie ciągłym lub krokowym. Tiyb ciągły powoduje wykonanie programu do momentu poprawnego zakończenia aplikacji, wystąpienia błędu krytycznego lub natrafienia na punkt przerwania (ang. breakpoint). Punkt przerwania to

6



Wyszukiwarka

Podobne podstrony:
Systemy wbudowanePrzekład sesji debuggera gdb-test0dmcslabl:~/gdb-test-example$ gdb ./test GNU gdb

więcej podobnych podstron