Progmar Marcin Załęczny

Język:

Przydatne komendy linuksowego debuggera gdb

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