GDB / ptrace如何捕获像SIGINT这样的信号?

时间:2014-08-11 18:02:24

标签: c linux gdb signals ptrace

当我在google搜索我的gdb和sigwait问题时,我发现了这个内核错误线程

GDB is not trapping SIGINT. Ctrl+C terminates program when should break gdb.

引用:

  

gdb将调试过程放在自己的pgrp中,并将终端设置为该pgrp。

     

当你点击C-c时,信号进入当前的pgrp,即进入已调试的进程,而不进入gdb。当传递信号时,ptrace将拦截它并让gdb在实际到达调试过程之前决定该做什么。

     

但是,您的程序使用sigwait,因此信号实际上从未传递过。相反,您通过sigwait将其出列,而无需通过实际的信号传递。 ptrace仅报告即将发送的信号。当您使用sigwait时,从技术上讲,信号一直被阻止,并且从未如此传递。

这条评论让我对信号和GDB的实际运作方式更加好奇,

1)“信号传递”和“信号排队”之间有什么区别?

2)当信号发送到调试过程时,GDB如何捕获信号?

谢谢,

0 个答案:

没有答案