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

  • Cuando se ejecuta bajo gdb con la configuración predeterminada, Ctrl-C no mata la aplicación, solo irrumpe en el depurador, donde puede decidir qué hacer. Utilice cont para " trague " la señal y la aplicación continúa sin ser molestada. O use signal 2 para pasar el SIGINT (2) a la aplicación. O use kill para cerrar la aplicación.

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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *