130 likes | 232 Views
Maciej Wątroba. GDB Omówienie z przykładami. 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.
E N D
Maciej Wątroba GDBOmówienie z przykładami
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