Me encontré con este mismo problema, y se me ocurrió lo que creo que es una manera bastante agradable de detener el ciclo infinito que sugirió BoBTFish.
En lugar de bucle while true
, puede utilizar la existencia de un archivo ficticio para controlar el bucle, por ejemplo:
touch loopfile; while [ -f loopfile ] ; do gdb -ex run a.out -ex quit ; done ;
Cuando desea detener la sesión de depuración infinita, puede abrir una nueva terminal en el mismo directorio y rm loopfile
, o puede salir desde el mismo terminal interrumpiendo con control-c
y borrar loopfile
desde dentro gdb
:
^CQuit
A debugging session is active.
Inferior 1 [process 11136] will be killed.
Quit anyway? (y or n) n
Not confirmed.
(gdb) shell rm loopfile
(gdb) quit
A debugging session is active.
Inferior 1 [process 11136] will be killed.
Quit anyway? (y or n) y
Hopef Si esto es útil para alguien en el futuro, parece una forma agradable (aunque hackosa) de solucionar problemas intermitentes.
acaba de intentar esto. Para matarlo, simplemente presione 'ctrl-Z' y luego' kill% [job number] '. Puede usar 'jobs' para verificar el número de trabajo. –
while true; do gdb -ex ejecutar a.out -ex quit; dormir 0.2; hecho ; –