截取 SIGSEGV 将不会产生 core dump 文件 您所在的位置:网站首页 没有dump文件 截取 SIGSEGV 将不会产生 core dump 文件

截取 SIGSEGV 将不会产生 core dump 文件

2024-06-02 01:34| 来源: 网络整理| 查看: 265

最近做了个实验验证 signal 和 core dump 的关系,用的是glibc

1) 不截取 SIGSEGV , 系统会产生 core dump 文件 (注意:不要忘了设置 ulimit -c unlimited)

2) 截取 SIGSEGV, 并调用 exit(), 就不会产生 core dump 文件 (如下面代码所示)

       不调用 exit(), 就会不停地调用 crashHandler,因为信号没有被处理

3) 在 crashHandler,最后不调用 exit(), 而是调用  signal(SIGSEGV, SIG_DFL);

    处理过程是这样: a: 打印 stack, 恢复 SIGSEGV 缺省处理, b, 第二次按系统缺省方式处理 SIGSEGV: 产生core dump 文件, 程序退出

4)SIG_IGN 无效,和 SIG_DFL一样都产生 core dump 文件

      就是说 signal(SIGSEGV, SIG_IGN); 等价   signal(SIGSEGV, SIG_DFL)

#include #include static void crashHandler(int sig) { signal(SIGSEGV, SIG_IGN); size_t size; char **strings; size_t i, j; void *array[10]; size


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有