HCRM博客

CentOS Core: 探索开源操作系统的核心组件

CentOS Core Dump 核心转储详解

在CentOS或SUSE等Linux系统中,默认情况下是关闭core dump(核心转储)功能的,这意味着当程序崩溃时,系统不会生成core文件,从而无法通过分析core文件来找出程序崩溃的原因,这对于C/C++开发中的调试工作非常不便,因此需要手动开启core dump功能。

CentOS Core: 探索开源操作系统的核心组件-图1
(图片来源网络,侵权删除)

如何开启Core Dump

1、临时开启

执行命令ulimit c unlimited 以临时开启core dump功能。

再执行ulimit c 查看返回值是否为unlimited,如果是,则说明开启成功。

2、永久开启

编辑/etc/security/limits.conf 文件,添加以下内容以永久设置core dump文件大小不受限制:

```

CentOS Core: 探索开源操作系统的核心组件-图2
(图片来源网络,侵权删除)

* soft core unlimited

* hard core unlimited

```

保存并退出编辑器。

3、验证是否正常生成core dump文件

编写一个简单的C程序,如demo.c,包含以下内容:

CentOS Core: 探索开源操作系统的核心组件-图3
(图片来源网络,侵权删除)

```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

保存并退出编辑器后,新的设置将永久生效。

分享:
扫描分享到社交APP
上一篇
下一篇