Najbardziej trudne / przydatne polecenia dla debuggera gdb [zamknięty]

Czy możesz publikować swoje najbardziej skomplikowane i przydatne polecenia podczas uruchamiania debuggera, takiego jak gdb lub dbx.

Author: Vijay , 2009-09-24

12 answers

  1. backtrace full : Complete backtrace with local variables
  2. do góry, down, frame : przesuwanie klatek
  3. watch : zawiesza proces po spełnieniu określonego warunku
  4. set print pretty on : wyświetla ładnie sformatowany kod źródłowy C
  5. set logging on: Log debugging session to show to others for support
  6. Ustaw tablicę print na : Pretty array drukowanie
  7. Zakończ : Kontynuuj do końca funkcji
  8. enable and disable : Enable / disable breakpoints
  9. tbreak: złamać raz, a następnie usunąć punkt przerwania
  10. Gdzie : aktualnie wykonywany numer linii
  11. info locals : wyświetl wszystkie zmienne lokalne
  12. info args : wyświetl wszystkie argumenty funkcji
  13. list : Zobacz źródło
  14. rbreak : break przy dopasowaniu funkcji Wyrażenie regularne
 128
Author: Ramkumar Ramachandra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-01 16:43:21

Uruchom gdb z tekstowym interfejsem użytkownika

gdb -tui
 95
Author: Amro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-27 10:30:08

Począwszy od gdb 7.0, istnieje odwracalne debugowanie , więc twoje nowe ulubione polecenia to:

* 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.
 42
Author: Paul Biggar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-29 01:18:45

Zamiast uruchamiać GDB za pomocą param "-tui" możesz również przełączyć się w tryb tekstowy po pewnym czasie używając wpisując "wh".

 18
Author: martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-09 07:53:34

thread apply all bt LUB thread apply all print $pc: aby szybko dowiedzieć się, co robią wszystkie wątki.

 13
Author: Olof,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-06-01 00:04:55

Na przykład makra zdefiniowane w stl-views.gdb

 6
Author: grigy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-09-24 12:06:56

Użycie opcji -command=<file with gdb commands> podczas uruchamiania gdb. Tak samo jak -x <command file>. Ten plik poleceń może zawierać polecenia gdb, takie jak punkty przerwania, opcje, itp. Przydatne w przypadku, gdy dany plik wykonywalny musi być poddawany kolejnym uruchomieniom debugowania przy użyciu gdb.

 6
Author: raghava,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-05-05 10:22:27

Skryptowanie gdb to dobra sztuczka, poza tym lubię Ustaw włączanie / wyłączanie blokowania harmonogramu, aby zapobiec uruchomieniu innych wątków podczas wchodzenia w jeden.

 5
Author: Ben,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-10 08:28:53

Zamiast uruchamiać gdb z opcją-tui, aby zobaczyć proces potomny, który zawiera ekran, który podświetla, gdzie znajduje się wykonujący wiersz kodu w twoim programie, przejdź do tej funkcji za pomocą C-x o I C-x A. jest to przydatne, jeśli używasz tej funkcji i co tymczasowo jej nie używać, więc możesz użyć strzałki w górę, aby uzyskać poprzednie polecenie.

 4
Author: Rose Perrone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-02 02:50:08
  • za pomocą .gdbinit (Uruchom plik, w którym możesz pisać makra i wywoływać z gdb). Miejsce .gdbinit w katalogu domowym tak, że jest pobierany przy każdym załadowaniu gdb
  • info threads aby wyświetlić listę wszystkich aktywnych wątków i f (#) - > # numer wątku, który chcesz przełączyć na

  • Czasami używam gdb do konwersji z szesnastkowego na dziesiętny lub binarny, jest bardzo przydatny zamiast otwierać Kalkulator

    • p / d 0x10 - > daje dziesiętny odpowiednik 0x10
    • p / t 0x10 - > binarny odpowiednik 0x10
    • p / x 256 -> hex odpowiednik 256
 3
Author: subbul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-13 16:42:24

To może być przydatne, jestem pewien, że można to poprawić choć, pomoc mile widziane:

define mallocinfo
  set $__f = fopen("/dev/tty", "w")
  call malloc_info(0, $__f)
  call fclose($__f)
 2
Author: elmarco,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-20 16:10:45

Aby debugować STL, dodaj zawartość do .gdbinit, wykonaj następujące instrukcje:

Http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF

 2
Author: Bob Yoplait,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-11-29 11:00:56