Risposte:
info locals
- Visualizza tutte le variabili locali; elenco - visualizza sorgente; rbreak - interruzione della funzione corrispondente all'espressione regolare.
set print object on
per gli elementi polimorfici e set print elements 0
sono due comandi che uso molto spesso. Abbastanza utile.
t a a bt
(significato thread apply all backtrace
). Potrebbe essere usato con (quasi) tutti gli altri comandi. Particolarmente utile con bt full
.
Avvia gdb con un'interfaccia utente testuale
gdb -tui
A partire da gdb 7.0, c'è il debug reversibile , quindi i tuoi nuovi comandi preferiti sono:
* 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.
Invece di avviare GDB con il parametro "-tui" puoi anche passare alla modalità testo dopo un po 'usando digitando "wh".
C-x a
. Puoi anche cambiare vista con C-x 1
e C-x 2
quando sei in modalità tui per vedere anche l'assemblaggio (se necessario).
Ad esempio le macro definite in stl-views.gdb
Utilizzo -command=<file with gdb commands>
dell'opzione durante l'avvio di gdb. Come -x <command file>
. Questo file di comandi può contenere comandi gdb come punti di interruzione, opzioni, ecc. Utile nel caso in cui un particolare eseguibile debba essere sottoposto a successive esecuzioni di debug usando gdb.
-iex
opzione per aggiungere singoli comandi sulla riga di comando di gdb.
lo scripting gdb è un buon trucco, a parte quello che mi piace attivare / disattivare il blocco dello scheduler per impedire l'esecuzione di altri thread quando ne fai uno.
set scheduler-locking on
dentro gdb
thread di informazioni per elencare tutti i thread attivi ef (#) -> # numero di thread a cui si desidera passare
a volte uso gdb per convertire da esadecimale a decimale o binario, è molto utile invece di aprire una calcolatrice
Invece di avviare gdb con l'opzione -tui per vedere un processo figlio che contiene una schermata che evidenzia dove si trova la riga di codice in esecuzione nel tuo programma, salta dentro e fuori da questa funzione con Cx o e Cx a. Questo è utile se stai usando la funzione e cosa non usare temporaneamente in modo da poter usare la freccia su per ottenere un comando precedente.
focus cmd
attivo nella finestra di comando usando in modo che le frecce su / giù funzionino. Si torna indietro usando focus src
.
Per eseguire il debug di STL, aggiungi contenuto a .gdbinit, segui queste istruzioni: