捕捉信号 SIGSEGV
的同时也可以生成 coredump
文件
当完成 Linux Kernel
设置之后,捕捉到 SIGSEGV
之后会在相应目录生成 coredump
文件
如果对 SIGSEGV
注册了信号函数,有可能导致 coredump
不能生成,需要修改函数如下
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <signal.h>
void sighandler(int signum)
{
printf("Process %d got signal %d\n", getpid(), signum);
signal(signum, SIG_DFL);
kill(getpid(), signum);
}
int main()
{
signal(SIGSEGV, sighandler);
printf("Process %d waits for someone to send it SIGSEGV\n", getpid());
sleep(1000);
return 0;
}