0%

how-to-handle-sigsegv-and-generate-coredump

捕捉信号 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;
}