Risposte:
info locals- Visualizza tutte le variabili locali; elenco - visualizza sorgente; rbreak - interruzione della funzione corrispondente all'espressione regolare.
set print object onper gli elementi polimorfici e set print elements 0sono 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 1e C-x 2quando 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.
-iexopzione 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 ondentro 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 cmdattivo 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: