linux C/C++ 捕获 SIGSEGV 段错误信号

程序运行遇到core dumped崩溃是常见现象,有时候,我们希望程序在崩溃的时候,先做点其他操作再崩溃,比如记录崩溃时刻的堆栈信息,或是提前释放一些硬件资源等等,那么就需要让程序捕获错误信号

下面是一个捕获SIGSEGV信号的简单例子。
SIGSEGV信号是最常见的core dumped信号,主要由访问空指针、内存访问越界、访问已释放的内存等原因导致

cpp 复制代码
#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;
}
相关推荐
此生只爱蛋19 小时前
【Linux】正/反向代理
linux·运维·服务器
qq_54702617919 小时前
Linux 基础
linux·运维·arm开发
zfj32119 小时前
sshd除了远程shell外还有哪些功能
linux·ssh·sftp·shell
我只会发热20 小时前
Ubuntu 20.04.6 根目录扩容(图文详解)
linux·运维·ubuntu
tang&20 小时前
哈希碰撞攻防战:C++闭散列与开散列实现全解析
c++·哈希算法
眠りたいです20 小时前
现代C++:C++11并发支持库
开发语言·c++·多线程·c++11·c++并发支持库
爱潜水的小L20 小时前
自学嵌入式day34,ipc进程间通信
linux·运维·服务器
小灰灰搞电子20 小时前
Rust可以取代C++么?
开发语言·c++·rust
保持低旋律节奏20 小时前
linux——进程状态
android·linux·php
zhuzewennamoamtf20 小时前
Linux I2C设备驱动
linux·运维·服务器