Sto eseguendo gdb e voglio esaminare uno di quegli sfortunati oggetti divini. Ci vogliono molte pagine (e ho un monitor da 24 “girato di lato!) Per vedere tutto. Per facilità d’uso, mi piacerebbe che gdb stampasse l’object su un file invece che sullo schermo in modo che io possa aprirlo in vi e andare in giro con facilità.Tutta la versatilità di gdb, ci deve essere un modo per farlo, giusto?
È necessario abilitare la registrazione.
(gdb) set logging on
Puoi dire quale file usare.
(gdb) set logging file my_god_object.log
Ed è ansible esaminare la configurazione di registrazione corrente.
(gdb) show logging
Ho scoperto che puoi redirect l’output da gdb a un file tramite il comando run
:
(gdb) run > outfile
Prolungamento della risposta di @ qubodup
gdb core.3599 -ex bt -ex quit |& tee backtrace.log
l’ -ex
esegue un comando gdb. Quindi il precedente carica il file core, esegue il comando bt
, quindi quit
comando. L’output è scritto su backtrace.log
e anche sullo schermo.
Un’altra utile chiamata gdb (che dà stacktrace con variabili locali da tutti i thread) è
gdb core.3599 -ex 'thread apply all bt full' -ex quit
Potresti voler salvare l’output dei comandi gdb in un file. Ci sono diversi comandi per controllare la registrazione di gdb.
set logging on
Abilita la registrazione.
set logging off
Disabilita la registrazione.
set logging file file
Cambia il nome del file di registro corrente. Il file di registro predefinito è gdb.txt.
set logging overwrite [on|off]
Per impostazione predefinita, gdb verrà aggiunto al file di registro. Impostare la sovrascrittura se si desidera impostare la registrazione per sovrascrivere il file di registro.
set logging redirect [on|off]
Di default, l’output di gdb andrà sia al terminale che al file di log. Imposta reindirizzamento se vuoi che l’output passi solo al file di registro.
show logging
Mostra i valori correnti delle impostazioni di registrazione.
Un semplice metodo per registrare gdb su un file mentre si sta ancora vedendo l’output (che facilita i comandi di scrittura) è usare il tee
:
gdb command |& tee gdb.log