我们写代码时,有时会自定义signal的处理函数,然后调试时想调试这个处理函数,该怎么做呢?
main.c代码如下,运行系统是debian11。main.c里自定义了信号SIGINT和SIGTERM的处理函数,
#include <signal.h>
#include <stdlib.h>
#include <unistd.h>
bool Running = true;
static void sigHandler(int sign)
{
Running = false;
}
int main()
{
signal(SIGINT, sigHandler);
signal(SIGTERM, sigHandler);
while (Running)
{
sleep(1);
}
return 0;
}
PS:我们平时使用CTRL+C去中断程序,其实就是向程序发送了SIGINT信号。
本人使用VSCode的native debug插件进行调试,事先要安装好gdb,这里先打2个断点,
如下,
关键一点是:发送信号前要把程序停下来,可以根据需要停在程序的某个位置。
gdb下对信号还有其它配置,可以参考这里
联系客服