Esto está algo relacionado con gdb set sobrescribir el inicio de sesión debería sobrescribir gdb.txt ¿correcto? .
Digamos que estoy ejecutando una sesión de alguna aplicación. Para propósitos de ejemplo, permítanme tomar el ejemplo de qbittorrent nuevamente.
Como se compartió antes, así es como ocurre una ejecución:
$ gdb qbittorrent (gdb) set logging overwrite on (gdb) set logging on (gdb) set pagination 0 (gdb) run
una forma que sé es salir de la aplicación con elegancia, pero a veces la aplicación se bloquea / toma demasiado tiempo o simplemente no responde.
Entonces, la única opción que me queda es usar CTRL+C
que, si lo entiendo correctamente, mata la aplicación subyacente. , en nuestro ejemplo qbittorrent y luego puedo salir de gdb por medio de
(gdb) quit
¿Hay / habría alguna otra forma de salir de la aplicación y aún dejar que el La sesión de gdb sigue ejecutándose o la única forma es la forma cruda que mencioné anteriormente.
AFAI sé que matar un proceso de aplicación debería ser la última solución y no la primera.
Comentarios
Responder
Puedes usar señales para esto. Antes de iniciar su programa, configure USR1
o USR2
para romper gdb
sin afectar el programa:
handle SIGUSR1 nopass
Luego, puede ejecutar su programa y, cuando necesite detenerlo, ejecute kill -USR1
desde otro shell con el pid apropiado (hijo). gdb
pausará la aplicación y luego podrá agregar puntos de interrupción, examinar el estado, etc., y si lo desea, continuar la ejecución con cont
.
gdb
con la configuración predeterminada, Ctrl-C no mata la aplicación, solo irrumpe en el depurador, donde puede decidir qué hacer. Utilicecont
para " trague " la señal y la aplicación continúa sin ser molestada. O usesignal 2
para pasar el SIGINT (2) a la aplicación. O usekill
para cerrar la aplicación.