Aby móc debuggować program, należy go skompilować z opcją -g .
Załadowanie programu do debuggera:
gdb application
Uruchomienie programu od początku:
(gdb) run
Wznowienie działania programu, po zatrzymaniu się na breakpoincie:
(gdb) continue
Wyświetlenie ścieżki wywołań razem z wartościami przekazanymi do poszczególnych funkcji:
(gdb) backtrace , lub
(gdb) where
Wyświetlenie wartości pod podanym adresem:
(gdb) x 0x7fffffffe204
Ustawienie breakpointu w linii numer 8 pliku file.c:
(gdb) break file.c:8
Ustawienie breakpointu na wejściu do podanej funkcji:
(gdb) break LinkedList<int>::remove
Nadanie istniejącemu breakpointowi warunku zatrzymania:
(gdb) condition 1 item_to_remove==1
Ustawienie warunkowego breakpointu:
(gdb) break file.c:8 if i >= ARRAYSIZE
Usuwa podany breakpoint:
(gdb) delete breakpoint_number
Wyświetla informacje na temat wszystkich istniejących breakpointów:
(gdb) info breakpoints
Wykonanie pojedyńczej instrukcji (stepping) programu, jeśli jest wywoływana funkcja, to wejście do tej funkcji:
(gdb) step
Wykonanie pojedyńczej instrukcji (stepping) programu, jeśli jest wywoływana funkcja, to ją wykonuje i przeskakuje do następnej instrukcji:
(gdb) next
Naciśnięcie klawisza ENTER przy pustej linii poleceń powoduje wykonanie ostatniej komendy:
(gdb) [ENTER]
Uruchamia program aż do wykonania się całej bieżącej funkcji
(gdb) finish
Wyświetlenie wartości zmiennej:
(gdb) print my_var
Wyświetlenie wartości zmiennej w postaci szesnastkowej:
(gdb) print/x my_var
Wyświetlenie wartości atrybutu obiektu:
(gdb) print object->field_name , lub
(gdb) print (*object).field_name
Wyświetlenie całego obiektu:
(gdb) print *object
Iteracyjne wyświetlenie zawartości listy:
(gdb) print list->next->next->next->data
Ustawienie watchpointa na zmiennej (program się zatrzyma na instrukcji zmieniającej wartość zmiennej):
(gdb) watch my_var
Wyświetlenie 10 linijek kodu źródłowego w okolicy bieżącej instrukcji:
(gdb) list
Wyjście z debuggera:
(gdb) quit
Wypisuje wszystkie funkcje zawierające w nazwie słowo mojafunkcja:
info function mojafunkcja
Tworzy punkt obserwacyjny, który wstrzymuje wykonywanie kodu podczas próby zmodyfikowania wartości zmiennej zmienna: watch zmienna Punkt obserwacyjny nie wstrzyma programu jeśli do powyższej zmiennej zostanie zapisana wartość równa wartości tej zmiennej.
Tworzy punkt obserwacyjny, który wstrzymuje wykonywanie kodu podczas próby zmodyfikowania wartości zmiennej zmienna o ile
bieżąca wartość zmiennej to 12:
watch zmienna if zmienna == 12
Wyświetla listę punktów obserwacyjnych:
info watchpoints
Wyświetla listę punktów wstrzymania:
info breakpoints
Wyświetla listę zmiennych lokalnych w bieżącej ramce stosu:
info locals
Wyświetla informacje o aktualnie wykonywanych wątkach:
info threads
Ustala punkt wstrzymania na funkcji mojafunkcja dla wątku o podanym ID. Zatrzymanie nastąpi, gdy trzeci wątek wywoła tę funkcję:
break mojafunkcja thread 3
Powoduje, że w czasie śledzenia programu krok po kroku, nie są uruchamiane inne wątki, które w tym czasie mogłyby osiągnąć
punkt wstrzymania (i wywołać przełączenie wątku w debuggerze):
set scheduler-lock on
Wyświetla dane o typie podanego symbolu:
whatis symbol
Dezasembluje dziesięć kolejnych instrukcji rozpoczynając od adresu funkcji main:
x/10i main