Czy możesz umieszczać najtrudniejsze i przydatne polecenia podczas uruchamiania debuggera, takiego jak gdb lub dbx.Najtrudniejsze/przydatne polecenia dla debuggera gdb
Odpowiedz
- ślad pełnej: Pełna backtrace ze zmiennymi lokalnymi
- się, dół, rama: poruszać się klatkach
- zegarek: Zawieś proces, gdy spełniony jest określony warunek
- wydruku zestaw całkiem na: Drukuje się ładnie sformatowanej kod źródłowy C
- zestaw rejestrowanie na: Zaloguj sesji debugowania pokazać innym wsparcia
- zestaw tablicy nadruk na: ładna tablicę drukowania
- wykończenie: Kontynuuj do końca funkcji
- umożliwić i wyłączyć: enab le/wyłącz punkty przerwania
- tbreak: Break raz, a następnie usunąć punkt przerwania
- gdzie: Numer linii aktualnie wykonywane
- informacyjnych mieszkańców: Zobacz wszystkie zmienne lokalne
- informacji args : Wyświetl wszystkie argumenty funkcji
- lista: zobacz źródło
- RBREAK: przerwa na funkcji dopasowywania wyrażeń regularnych
Na przykład makra zdefiniowane w stl-views.gdb
thread apply all bt
lub thread apply all print $pc
: Aby dowiedzieć się szybko, co robią wszystkie wątki.
To było polecenie, którego szukałem przez długi czas! Naprawdę nieprzyjemnie jest sprawdzić wszystkie 30 wątków jeden po drugim! – tothphu
AKA: t a a bt. –
Zaczynając w gdb 7.0, istnieje reversible debugging, dzięki czemu nowe ulubione polecenia są:
* reverse-continue ('rc') -- Continue program being debugged but run it in reverse
* reverse-finish -- Execute backward until just before the selected stack frame is called
* reverse-next ('rn') -- Step program backward, proceeding through subroutine calls.
* reverse-nexti ('rni') -- Step backward one instruction, but proceed through called subroutines.
* reverse-step ('rs') -- Step program backward until it reaches the beginning of a previous source line
* reverse-stepi -- Step backward exactly one instruction
* set exec-direction (forward/reverse) -- Set direction of execution.
Zamiast uruchamiania GDB z "-tui" możesz także przełączyć się do trybu tekstowego po dłuższym czasie, wpisując "wh".
Jak wrócić? –
Ctrl-a a, aby powrócić do "normalnego" widoku wiersza poleceń! – Kevin
"-" można użyć instaed z "wh", krótszy, tym lepiej .. :) –
Skrypty gdb to dobra sztuczka, poza tym, że podoba mi się włącza/wyłącza blokowanie harmonogramu, aby zapobiec uruchomieniu innych wątków podczas wkraczania w nie.
Jak ustawić blokowanie harmonogramu? –
'ustaw harmonogram-blokowanie włączone' wewnątrz gdb – Ben
jak to zrobić, aby był domyślny? Próbowałem go .gdbinit, ale gdb drukuje /home/omry/.gdbinit:1: Błąd w źródłowym pliku komend: Cel "Brak" nie obsługuje tego polecenia. –
- Używanie .gdbinit (plik startowy, w którym można pisać makra i wywoływać z gdb). Miejsce .gdbinit w swoim katalogu domowym tak, że jest on podniósł każdym razem gdb jest załadowany
informacji podaje notować wszystkie aktywne wątki i F (#) -> # Numer wątek chcesz przejść do
kiedyś użyć gdb przekonwertować z hex na dziesiętny lub binarny, jego bardzo przydatny zamiast otwarcia kalkulator
- p/d 0x10 -> daje odpowiednik dziesiętny 0x10
- P/t 0x10 - > binarny odpowiednik 0x10
- P/x 256 -> heks odpowiednik 256
pomocą opcji -command=<file with gdb commands>
podczas zapalania gdb. To samo, co -x <command file>
. Ten plik poleceń może zawierać polecenia gdb, takie jak punkty przerwania, opcje itd. Przydatne w przypadku, gdy określony plik wykonywalny musi zostać wprowadzony podczas kolejnych uruchomień debugowania przy użyciu gdb.
Możesz także użyć opcji '-iex', aby dodać poszczególne polecenia w wierszu poleceń gdb. – doug65536
Może to być użyteczne, jestem pewien, że to mogło być lepsze choć pomoc mile widziane:
define mallocinfo
set $__f = fopen("/dev/tty", "w")
call malloc_info(0, $__f)
call fclose($__f)
debugowania STL, dodać zawartość do .gdbinit, wykonaj następujące czynności:
Identyczny z odpowiedzią Grigy'ego. – DevSolar
Zamiast uruchamiania gdb z opcją -tui, aby zobaczyć proces potomny, który zawiera ekran, który wyróżnia miejsce, w którym znajduje się linia kodu, należy wskoczyć i wyjść z tej funkcji za pomocą Cx o i Cx a. Jest to przydatne, jeśli korzystasz z tej funkcji i tymczasowo jej nie używasz, aby użyć poprzedniego przycisku, aby uzyskać poprzednie polecenie.
możesz zmienić fokus na okno poleceń za pomocą 'focus cmd', aby strzałki w górę/w dół działały. Przełączasz się ponownie za pomocą 'focus src'. –
'info locals' - Wyświetl wszystkie zmienne lokalne; lista - wyświetl źródło; rbreak - break na funkcji pasującej do wyrażenia regularnego. –
source/path/to/macro/file I wszystkie moje fajne makra pomogą mi w debugowaniu w ciągu kilku sekund. – Sudhanshu
'ustaw obiekt drukowania na' dla elementów polimorficznych i 'ustaw elementy druku 0' to dwie komendy, których używam bardzo często. Bardzo przydatne. –