linux C/C++ 捕获 SIGSEGV 段错误信号
崩溃是常见现象,有时候,我们希望程序在崩溃的时候,先做点其他操作再崩溃,比如记录崩溃时刻的堆栈信息,或是提前释放一些硬件资源等等,那么就需要让程序捕获错误信号。信号,主要由访问空指针、内存访问越界、访问已释放的内存等原因导致。
·
程序运行遇到core dumped崩溃是常见现象,有时候,我们希望程序在崩溃的时候,先做点其他操作再崩溃,比如记录崩溃时刻的堆栈信息,或是提前释放一些硬件资源等等,那么就需要让程序捕获错误信号
下面是一个捕获SIGSEGV信号的简单例子。SIGSEGV信号是最常见的core dumped信号,主要由访问空指针、内存访问越界、访问已释放的内存等原因导致
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
static void signal_handler(int sig) {
printf("core dumped...\n");
/*
// to do something
*/
exit(-1);
}
int main() {
signal(SIGSEGV, signal_handler);
int *p = nullptr;
*p = 1;
return 0;
}
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)