CentOS Core Dump 核心转储详解
在CentOS或SUSE等Linux系统中,默认情况下是关闭core dump(核心转储)功能的,这意味着当程序崩溃时,系统不会生成core文件,从而无法通过分析core文件来找出程序崩溃的原因,这对于C/C++开发中的调试工作非常不便,因此需要手动开启core dump功能。
如何开启Core Dump
1、临时开启:
执行命令ulimit c unlimited
以临时开启core dump功能。
再执行ulimit c
查看返回值是否为unlimited,如果是,则说明开启成功。
2、永久开启:
编辑/etc/security/limits.conf
文件,添加以下内容以永久设置core dump文件大小不受限制:
```
* soft core unlimited
* hard core unlimited
```
保存并退出编辑器。
3、验证是否正常生成core dump文件:
编写一个简单的C程序,如demo.c
,包含以下内容:
```c
#include <stdio.h>
int main () {
char* bad_point=NULL;
*bad_point = 99;
}
```
编译程序:gcc g demo.c o demo
执行程序:./demo
,查看是否生成了core.xxxx
文件,如果生成成功,则可以使用gdb demo core.xxxx
进行调试。
配置Shell脚本
为了方便地开启和配置core dump功能,可以将相关命令保存为一个简单的Shell脚本并执行,以下是一个简单的示例脚本coredumpshell.sh
:
#!/bin/bash Filename: coredumpshell.sh Description: Enable coredump and format the name of core file on CentOS system. Enable coredump with unlimited filesize for all users echo "* soft core unlimited" >> /etc/security/limits.conf echo "* hard core unlimited" >> /etc/security/limits.conf Apply the new limits ulimit c unlimited
将此脚本保存后,赋予其可执行权限并执行即可完成配置。
分析Core文件
通过分析core文件,开发人员可以找出程序崩溃的原因,帮助进行调试和修复,分析core文件的过程一般包括以下几个步骤:
1、确认core文件是否存在:在程序崩溃后,系统会默认生成一个core文件,一般位于当前目录下。
2、使用gdb进行调试:使用gdb demo core.xxxx
命令载入core文件进行调试,在gdb中,可以设置断点、单步执行代码、查看变量值等,以找出问题所在。
注意事项
开启core dump功能可能会占用大量磁盘空间,特别是在高负载的生产环境中,应谨慎使用。
定期检查和清理core dump文件,以防止磁盘空间耗尽。
在分析core文件时,确保有足够的权限访问相关目录和文件。
FAQs
Q1: 如何在CentOS中临时开启core dump功能?
A1: 在CentOS中,可以通过执行命令ulimit c unlimited
来临时开启core dump功能,然后执行ulimit c
查看返回值是否为unlimited,如果是,则说明开启成功。
Q2: 如何在CentOS中永久开启core dump功能?
A2: 在CentOS中,要永久开启core dump功能,需要编辑/etc/security/limits.conf
文件,添加以下内容:
soft core unlimited hard core unlimited
保存并退出编辑器后,新的设置将永久生效。