GDB Omówienie z przykładami Maciej Wątroba
Czym jest GDB? „GNU Debugger” Przeznaczony do pracy z m.in. do C oraz C++ Pozwala sprawdzić stan programu w wybranym punkcie wykonania Ułatwia znalezienie przyczyn błędów (np. przepełnienie stosu)
Kompilacja Aby dodać wsparcie dla debuggowania kompilujemy z opcją -g gcc [flagi] -g <source> -o <output> Na przykład: gcc -Wall -g prog1.c -o prog1
Praktyczne wskazówki (gdb) help [command] Historia autodopełnianie
Uruchamianie gdb (gdb) file prog1 Komendą file ładujemy odpowiedni plik
Uruchamianie c.d. (gdb) run Jeśli wszystko jest OK powinien zakończyć się bez błędów Jeśli wystąpią jakieś problemy dostaniemy przydatne informację dotyczące błędu (np. w której linii wystąpił)
Breakpoints Breakpointy służą do zatrzymania programu w określonym miejscu (gdb) break file1.c:6 Możemy dodać dowolną ilość breakpointów
Breakpoints c. d. Można również ustawić na fukncji (gdb) brea my_func
Co dalej? Run … Przejście do kolejnego breakpointa komendą continue (gdb) continue Przejdść do kolejnej linii kodu komendą step (gdb) step Bardzo podobna komenda next
Aspekty wykonywania (gdb) print my_var (gdb) print/x my_var (w formacie hexadecymalnym)
Watchpoints Zatrzymanie programu gdy wartość danej zmiennej zostanie zmodyfikowana (gdb) watch my_war
Inne komendy backtrace / where finish – uruchom do końca działania obecnej funkcji delete – usuń breakpoint Info breakpoints – informacje o breakpointach
Wskaźniki Podgląd adresów pamięci Podglądanie zawartości Podgląd struktury