我取消程序时出现分段错误.我正在使用gdb进行调试,问题是当我在调试时按Ctrl-C gdb不会取消程序并执行它应该做的就是停止它.
我想要的是执行Ctrl-C并且不允许gdb停止它.有没有办法做到这一点?还有其他调试建议吗?我不能使用printf,因为我真的不清楚问题的来源.
gdb正在拦截信号.按CTRL-C时,实际上是导致终端驱动程序生成SIGINT.
您需要做的是让GDB使用signal命令生成SIGINT .语法是
信号NUM
和man信号会告诉你信号编号(在这种情况下,SIGINT是信号2,所以signal 2
会这样做.)
果然,您可以使用符号名称. info signal
会告诉你所有的名字等
哦,顺便说一下,你可能已经为SIGINT安装了一个信号处理程序,并且参数不正确.
另一种方法是handle SIGINT noprint pass
在运行程序之前通过在gdb提示符下键入来阻止gdb捕获SIGINT .
一种选择是将未在调试器中运行时生成的核心文件加载到gdb中.在gdb中,键入core-file [filename]
.