linux不生成core dump文件

这篇具有很好参考价值的文章主要介绍了linux不生成core dump文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

今天尝试core dump功能调试,发现一直没法生成崩溃dump文件

代码如下:

#include"iostream"
using namespace std;                                                            
int main(){
    int a = 10; 
    //cin>>a;
    int b = 0;
    cout << a << b << endl;
    int c = a/b;
    cout<<a/b<<endl;
    system("pause");
    return 0;
}

尝试方法:

  1. core dump文件大小设置成10000个block(通过指令ulimit -c 10000)

  1. ulimit -c unlimited 可以设置core dump文件大小不限制;(只在当前shell有效)

  1. 修改vim ~/.bashrc,添加: ulimit -c unlimited,使生效:source ~/.bashrc

程序崩溃后不生成dump文件,linux,linux,mcu,arm开发,ubuntu,Powered by 金山文档
  1. 查看dump文件存放目录是否在当前目录下

查看dump文件处理方式:cat /proc/sys/kernel/core_pattern

默认输出:| /usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E,最前面的管道'|'即将dump出来的文件给到脚本处理,所以不会对崩溃文件做存储;

以下是参数列表:

%p - insert pid into filename 添加pid

%u - insert current uid into filename 添加当前uid

%g - insert current gid into filename 添加当前gid

%s - insert signal that caused the coredump into the filename 添加导致产生core的信号

%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间

%h - insert hostname where the coredump happened into filename 添加主机名

%e - insert coredumping executable name into filename 添加命令名

需要执行:echo /data/coredump/core.%e.%p> /proc/sys/kernel/core_pattern,将崩溃文件存储到/data/coredump文件夹下面,如果没有这个文件夹需要手动创建;

  1. 如果再运行执行文件的时候还是没有生成core dump文件,尝试切换到root权限下运行;

  1. 在root权限下,也需要修改vim ~/.bashrc,添加: ulimit -c unlimited,使生效:source ~/.bashrc

  1. exit退出root权限;

  1. 再运行执行文件时,就看到/data/coredump 文件夹下看到生成的dump文件

程序崩溃后不生成dump文件,linux,linux,mcu,arm开发,ubuntu,Powered by 金山文档
  1. 软件重启时,又出现不能生成core dump文件的现象

发现是core的生成路径(/proc/sys/kernel/core_pattern里的内容)又被篡改为

|/usr/share/apport/apport -p%p -s%s -c%c -d%d -P%P -u%u -g%g -- %E

原因是因为第二步的修改只是对此次系统运行生效,重启后会被修改(具体原因还没搞明白)

解决方法:

  1. 再次执行步骤2;

  1. 修改/etc/sysctl.conf配置文件,添加

  kernel.core_pattern=core-%e-%p-%t
  kernel.core_uses_pid=1

下次电脑重启时,这个内容不会被修改,但是/proc/sys/kernel/core_pattern里的内容还是会被修改,需要 再次执行 sysctl -p 即可;文章来源地址https://www.toymoban.com/news/detail-698630.html

到了这里,关于linux不生成core dump文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Ubuntu开启生成Core Dump的方法

    Ubuntu下无法生成Core Dump解决方法 查看是core file size是否为0,若为0,通过以下方式设置size 或者 core的缺省位置是程序所在目录,可以通过修改/proc/sys/kernel/core_pattern来指定core文件生成位置和名称。查看文件内容是否为core,若为其他请执行以下命令 参考链接:一些比较好的示

    2024年02月10日
    浏览(29)
  • 在.NET程序崩溃时自动创建Dump的思路详解

    今天在浏览张队转载文章的留言时,遇到一个读者问了这样的问题,如下图所示:   首先能明确的一点是\\\"程序崩溃退出了是不能用常规的方式dump的\\\",因为整个进程树都已经退出。现场已经无法使用常规的方式读取到。 一般来说常规的方法是没办法读取到的,也有一些特殊

    2024年01月18日
    浏览(34)
  • 使用Windbg分析从系统应用程序日志中找到的系统自动生成的dump文件去排查问题

    目录 1、尝试将Windbg附加到目标进程上进行动态调试,但Windbg并没有捕获到

    2024年02月14日
    浏览(39)
  • 【Linux】进程信号中的 core dump 标记位

    我们知道所有的程序最终运行起来,都会变成进程,进程在运行时可能会异常终止或崩溃,而Linux操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做 Core Dump (中文有的翻译成 核心转储 )。 保存的这个文件通常是:该进程的同目录下以 core.PID 的

    2024年02月14日
    浏览(41)
  • 【Linux问题处理】Aborted (core dumped)报错python

    原文作者 :我辈理想 版权声明 :文章原创,转载时请务必加上原文超链接、作者信息和本声明。 首先需要在ubuntu系统安装gdb工具。 gdb是c的工具,常用命令如下: 如果安装了python-dbg,还可以使用以下命令: core文件默认是不存储的,ulimit -c 可以改变当前连接,具备文件存储

    2024年02月14日
    浏览(44)
  • 使用IDA查看汇编代码,结合安卓系统生成的Tombstone文件,分析安卓app程序崩溃问题

    目录 1、IDA工具介绍 2、产品及问题场景描述 3、查看Tombstone文件

    2024年02月13日
    浏览(48)
  • Linux环境下如何生成core文件

    Linux环境下进程发生异常而挂掉,通常很难查找原因,但是一般Linux内核给我们提供的核心文件,记录了进程在崩溃时候的信息。但是生成core文件需要设置开关,具体步骤如下: 1、查看生成core文件的开关是否开启,输入命令# ulimit -a 我们看到,第一行core文件大小为0,没有开

    2023年04月20日
    浏览(24)
  • 『C/C++养成计划』Linux遇到Aborted (core dumped)的处理方法

    C++项目遇到Aborted (core dumped)的处理方法 Core Dump 是一个运行时错误。 Core 的意思是内存, Dump 的意思是扔出来, 堆出来。在开发(或使用)一个程序时,有时程序莫名其妙的 down 了, 却没有任何的提示(有时候会提示 core dumped )。虽然系统没事,但我们下次仍可能遇到相同的问题。这

    2023年04月09日
    浏览(37)
  • 生成和查看dump文件

    在日常开发中,即使代码写得有多谨慎,免不了还是会发生各种意外的事件,比如服务器内存突然飙高,又或者发生内存溢出(OOM)。当发生这种情况时,我们怎么去排查,怎么去分析原因呢? 内存溢出 虚拟机由于堆中拥有太多不可回收对象没有回收,导致无法继续创建新对象

    2024年02月15日
    浏览(36)
  • 堆内存溢出自动生成DUMP文件

    如果发生了内存泄露,如果好重现,使用JVisualvm,或者jmap,Jprofiler进行Heap Dump,使用MAT进行分析。但不好重现的话,可以打开JVM的HeapDumpOnOutOfMemoryError参数,待到有了Heap Dump再使用MAT等工具分析。 说明: 通过jvm参数-XX:+HeapDumpOnOutOfMemoryError可以让JVM在出现内存溢出时候Dump出当前

    2024年02月16日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包