我执行ctrl c时调试分段错误

Edu*_*rdo 22 debugging gdb copy-paste

我取消程序时出现分段错误.我正在使用gdb进行调试,问题是当我在调试时按Ctrl-C gdb不会取消程序并执行它应该做的就是停止它.

我想要的是执行Ctrl-C并且不允许gdb停止它.有没有办法做到这一点?还有其他调试建议吗?我不能使用printf,因为我真的不清楚问题的来源.

Cha*_*tin 31

gdb正在拦截信号.按CTRL-C时,实际上是导致终端驱动程序生成SIGINT.

您需要做的是让GDB使用signal命令生成SIGINT .语法是

信号NUM

和man信号会告诉你信号编号(在这种情况下,SIGINT是信号2,所以signal 2会这样做.)

更新

果然,您可以使用符号名称. info signal会告诉你所有的名字等

哦,顺便说一下,你可能已经为SIGINT安装了一个信号处理程序,并且参数不正确.

  • 您还可以为信号使用符号名称,例如"signal SIGINT". (2认同)

rud*_*uds 21

另一种方法是handle SIGINT noprint pass在运行程序之前通过在gdb提示符下键入来阻止gdb捕获SIGINT .


Sco*_*e T 7

一种选择是将未在调试器中运行时生成的核心文件加载到gdb中.在gdb中,键入core-file [filename].