2009-11-10 9 views
18

En bash, puedo usar el comando script, que vuelca todo lo que se muestra en la cáscara a un archivo, incluyendo:¿Cómo volcar toda la sesión de GDB en un archivo, incluidos los comandos que escribo y su salida?

  • comandos escritos
  • línea PS1
  • stdout y stderr de comandos

¿Cuál es el equivalente en gdb?

Intenté ejecutar shell script desde dentro de GDB, pero después de presionar return, estaba en el shell y perdí el prompt de shell y ya no podía ejecutar el comando. Además, no pude usar ctrl + c o ctrl + \ para salir. Necesitaba forzar matar al /bin/login tty2 para salir.

+1

Se puede publicar un ejemplo de lo que ha intentado? ¿Una captura de pantalla con una breve explicación? Además, ¿qué significa "En el intérprete de comandos, podría usar script para extraer texto"? ¿Ejecuta un script en un archivo para extraer texto o utiliza la redirección de shell (>) para extraer texto? El script –

+0

es el comando para registrar el resultado del shell en el archivo mecanografiado. – Jichao

+1

@AaronDigulla No sabía acerca de 'script', es un ejecutable (horriblemente genéricamente nombrado) de linux-util. He explicado lo que hace un poco. –

Respuesta

31

Si desea registrar la salida de GDB, puede usar el GDB logging output commands, ej.

set logging file mylog.txt 
set logging on 

Si desea redirigir la salida de su programa a un archivo, se puede utilizar una redirección, por ejemplo.

run myprog > mylog.txt 

ver la chapter on program IO in the GDB manual para más información

+0

el enlace está roto y debe ser http://sourceware.org/gdb/current/onlinedocs/gdb/Logging-Output.html#Logging-Output. – Jichao

0

Eche un vistazo a la documentación de GDB. Buscar "Secuencias de comandos almacenados". Hay una forma de guardar los comandos GDB en un archivo y ejecutarlos con el comando source y puede usar algunos comandos GDB en estos scripts para imprimir información disponible para GDB (como echo, output y printf).

Si desea esa salida en un archivo, use set logging file FILE.

2
  • Crear un archivo de texto, es decir, gdbCommands.txt, con los siguientes comandos

set logging on my_log_file\nbt 10\nq

bt 10, indica el número de líneas (Llamadas de función) que necesitamos desde el backtrace, en nuestro ejemplo son 10 líneas.

  • Ejecutar GDB usando el siguiente comando, asumiendo un archivo de volcado de memoria core.2345

gdb -x gdbCommands.txt myApp core.2345

  • abierto my_log_file e inspeccione traza!

howto-redirect-gdb-backtrace-output-to-a-text-file

+1

Si bien esto podría responder teóricamente a la pregunta, [sería preferible] (http://meta.stackexchange.com/q/8259) incluir aquí las partes esenciales de la respuesta y proporcionar el enlace de referencia. De lo contrario, la gente puede votar abajo o marcar esta respuesta. – joran

+0

Gracias por la información :) – hackhowtofaq

+3

Gracias por publicar su respuesta! Asegúrese de leer detenidamente [Preguntas frecuentes sobre autopromoción] (http://stackoverflow.com/faq#promotion). También tenga en cuenta que * se requiere * que publique una exención de responsabilidad cada vez que se vincula a su propio sitio/producto. –

Cuestiones relacionadas