2011-05-09 16 views
69

Estoy ejecutando gdb y quiero examinar uno de esos desafortunados objetos de dios. Se necesitan muchas páginas (¡y tengo un monitor de 24 pulgadas girado hacia los lados!) Para verlo todo. Para facilitar el uso, me gustaría que gdb imprima el objeto en un archivo en lugar de la pantalla para que pueda abrirlo en vi y moverse con facilidad. con la versatilidad de todo del BGF, tiene que haber una manera de hacer esto, ¿verdad?Gdb print to file en lugar de stdout

Respuesta

111

necesita habilitar el registro.

(gdb) set logging on 

se le puede decir qué archivo a utilizar.

(gdb) set logging file my_god_object.log 

Y puede examinar la configuración de registro actual.

(gdb) show logging 
+7

Y si desea que la salida vaya _al solo_ al archivo de registro, use 'set logging redirect on'. –

10

He descubierto que se puede redirigir la salida del BGF a un archivo mediante el comando run:

(gdb) run > outfile 
+5

Ese sería el resultado del programa que se está depurando, no el resultado del propio gdb. OP quería registrar la salida de gdb. –

+0

vea también: http://stackoverflow.com/questions/2388561/block-output-of-debugged-program-gdb –

+0

@thepaul pero esto es de hecho muy útil ya que estoy depurando un programa QT que simplemente destruye el stdin de gdb con su basura QDebug – rostamn739

2

Un método sencillo para iniciar la sesión GDB en un archivo al mismo tiempo viendo la salida (lo que facilita escribir comandos) es utilizar tee:

gdb command |& tee gdb.log 
4

Extendiéndose sobre la respuesta de @ qubodup

gdb core.3599 -ex bt -ex quit |& tee backtrace.log 

el interruptor -ex ejecuta un comando gdb. Entonces, lo anterior carga el archivo core, ejecuta el comando bt, luego el comando quit. La salida se escribe en backtrace.log y también en la pantalla.

Otra invocación GDB útil (dando StackTrace con variables locales de todos los hilos) es

gdb core.3599 -ex 'thread apply all bt full' -ex quit 
+0

En algunos sistemas, debe escribir 'gdb -c core.3599 ...' – user7610

4

Es posible que desee guardar la salida de los comandos de GDB en un archivo. Hay varios comandos para controlar el registro de gdb.

set logging on 

Habilitar el registro.

set logging off 

Deshabilitar el registro.

set logging file file 

cambiar el nombre del archivo de registro actual. El archivo de registro predeterminado es gdb.txt.

set logging overwrite [on|off] 

Por defecto, gdb se agregará al archivo de registro. Configure la sobrescritura si desea configurar el inicio de sesión para sobrescribir el archivo de registro.

set logging redirect [on|off] 

De forma predeterminada, la salida de gdb irá a la terminal y al archivo de registro. Establezca la redirección si desea que la salida vaya solo al archivo de registro.

show logging 

Muestra los valores actuales de la configuración de registro.

Cuestiones relacionadas