Linux下coredump的配置方法以及流程
作者:凌肖战
一. coredump 机制简介
coredump 机制是在 Linux 系统中提供的一种调试机制。
Linux coredump 功能 是当 Linux 系统下应用程序异常时,Linux 内核默认的一种异常信号处理机制,内核会把异常信息与进程内存转储成 coredump 文件。
软件开发人员可以通过对该 coredump 文件进行离线调试,定位代码中出现的问题。
常出现这类的问题是低级 bug 中的内存访问越界、使用空指针、堆栈溢出等情况。
使程序运行过程中异常退出或者终止,满足这些条件就会产生 coredump 的文件。
coredump 文件分析方法是一种离线调试方法。
二. Linux下 coredump 的配置方法
这里为了方便起见,以 ubuntu 系统为例,介绍 ubuntu 系统下 coredump 功能的配置流程。
流程如下:
1. 开启 coredump 功能
开启 coredump 功能分临时开启与永久开启。
这里使用永久开启的方式:
即 更改 /etc/security/limits.conf 文件中的内容。
操作如下:
去掉 soft core 0 一行前面的注释 ,同时,将 0 改为 unlimited 或 某个数值(如 204800)。
更改 limits.conf 文件中内容,
如下所示:
* soft core 204800
验证是否开启:终端输入 ulimit -c 命令,可以查看是否已经开启。
0
:表示未开启。204800
:表示已经开启。coredump 文件大小为 204800,单位为 blocks。
2. 关闭 ubuntu 系统下的 apport.service 服务程序
Linux 终端输入 sudo service apport stop 命令可以关闭 apport.service 服务程序。
注意:
ubuntu 系统下 apport.service 服务程序,是自动生成崩溃报告,官方为了自动收集错误的功能。
3. 更改生成的 coredump 文件的路径
更改方式分临时更改与永久更改方式。这里使用临时更改方式。
操作如下:
首先,创建一个文件夹。我这里在 /home/wangtian/ 创建了 coredump_file 文件夹。
其次,切换到 root 权限。终端输入 sudo -s 命令。
最后,更改 coredump 文件生成路径。
终端输入如下命令:
echo '/home/wangtian/coredump_file/%t-%e-%p-%c.core' > /proc/sys/kernel/core_pattern
4. 运行可执行程序
当程序运行崩溃时,会在自定义文件夹下生成 coredump 文件。
首先,编译代码。编译时需要加 -g 编译选项,旨在生成带调试信息的可执行程序。
其次,运行程序。该代码在运行崩溃时,会在所设置的文件夹目录下生成 coredump 文件。
注意:
这里要生成 coredump 文件,则代码中是存在内存访问越界或空指针使用等等的一些问题,导致程序运行时会崩溃的现象。
总结
上述配置 生成coredump 文件的方法,已操作验证。
好了,以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。