Linux下 更改coredump文件的生成路径
admin
2024-02-27 20:42:46

一. Linux下coredump文件


在 Linux 系统下,存在一种 coredump机制。

Linux 系统下,在进行 C/C++ 开发时,经常会遇到程序运行突然崩溃的问题。这时可以通过离线调试即 coredump 方式进行 bug 的定位。

具体为当程序出现段错误时,内核错误,通常出现这类的问题是低级bug中的内存访问越界、使用空指针、堆栈溢出等情况。使程序运行过程中异常退出或者终止,满足这些条件就会产生coredump  的文件。

注意:使用 coredump文件分析方法,来定位代码运行崩溃问题时,前提是代码在编译阶段需要加入 -g 编译选项。

二.  更改 coredump文件的生成路径

经过我在 ubuntu 系统下验证,在Linux 系统默认情况下,同时开启 coredump 功能的前提下,对存在段错误的C 代码进行(带 -g 编译选项)进行编译,运行时不会生成 coredump 文件。

经过百度,网上很多技术网友提到,ubuntu 系统默认情况下,会开启一个叫 apport.service 服务程序。这个服务程序用于自动生成崩溃报告,官方为了自动收集错误的。

注意:ubuntu 系统中的 apport.servie 服务程序如果开启着,则无法生成 coredump 文件,因为生成的 coredump 文件已经被这个服务程序处理了。

三.  Linux 下无法生成 coredump文件的可能原因

Linux 系统下,在进行 C/C++ 开发时,当程序运行突然崩溃时,无法生成 coredump 文件,可能的原因如下:

1.   coredump 功能可能没有开启。

检查是否开启 coredump 功能。终端输入 ulimit -c 命令确认。

开启 coredump 功能有两种方法:临时开启方式与永久开启方式。

2. 被 ubuntu 系统中 apport.service 服务程序自动处理了(即被系统的服务程序吞掉了)。

ubuntu 系统默认情况下,开启了一种服务程序 apport.service。即自动生成崩溃报告,官方为了自动收集错误的。

处理的方法: 可以关闭系统的 apport.service 服务程序(注意:这种方法只是一种临时关闭的,当系统重启后,apport.service 服务程序又会开启)。

输入如下命令,可以临时关闭该服务:

sudo service apport stop    //关闭错误报告

3.  生成 coredump 文件的信号被用户程序捕捉。

操作系统在程序发生异常,而异常信号在进程内部又没有被捕获的情况下,方可生成 coredump 文件。

4. 生成的 coredump 文件太大。

可以通过输入 ulimit -c 命令,可以查询 所设置的 生成的 coredump 文件限制大小。

相关内容

热门资讯

Civil 3D 2016安装... Civil 3D 2016中文版安装与激活图文教程,专为此版本安装包编写,其他版本可参考使用。1、 ...
莫斯科:冰上舞火 (来源:辽宁日报)转自:辽宁日报 1月24日,演员在俄罗斯首都莫斯科的一处滑冰场上表演。一场冰上表演...
2800亿元背后的数智动力 转自:贵州日报“全球首家机器人6S店”贵州首店内,机器人在演示下围棋。胡雁 摄(影像贵州)2025中...
严查商品过度包装 (来源:中国消费者报)  近日,北京市石景山区市场监管局聚焦礼盒、茶叶、保健食品、化妆品等重点品类,...
冬捕起网 万人争睹 (来源:辽宁日报)转自:辽宁日报 起网捕鱼、冰雪穿越、特色美食……1月24日上午,2026年第十一届...