debugging - Depuración de un error de segmentación cuando hago ctrl c
gdb copy-paste (4)
Recibo una falla de segmentación cuando cancelo mi programa. Estoy usando gdb para la depuración, el problema es que cuando presiono Ctrl-C mientras estoy depurando, gdb no cancela el programa y hace lo que se supone que debe hacer, es detenerlo.
Lo que quiero es hacer Ctrl-C y no permitir que gdb lo detenga. ¿Hay alguna manera de hacer esto? ¿Alguna otra recomendación para la depuración? No puedo usar printf porque sinceramente no tengo una idea clara de dónde viene el problema.
Una alternativa es evitar que gdb handle SIGINT noprint pass
en el indicador gdb antes de ejecutar el programa.
Una opción es cargar el archivo core producido cuando no se está ejecutando en el depurador en gdb. Desde dentro de gdb, escriba core-file [filename]
.
También puede enviar el CTRL-C (también conocido como SIGINT) desde otro terminal: kill -INT
gdb está interceptando la señal. Cuando presiona CTRL-C, en realidad está causando que el controlador del terminal genere un SIGINT.
Lo que necesita hacer es hacer que GDB genere el SIGINT usando el comando de señal . la sintaxis es
señal num
y la señal de hombre le indicará el número de señal (en este caso, SIGINT es la señal 2, por lo que la signal 2
lo hará).
Actualizar
Efectivamente, puedes usar el nombre simbólico. info signal
le dirá todos los nombres, etc.
Oh, por cierto, lo más probable es que tengas un controlador de señal instalado para SIGINT y los argumentos no son correctos de alguna manera.