什么叫核心转储

理解Linux Core Dumps

在做缩小Linux的kernel size的时候,在
–>Gerneral Setup
–>Configure standard kernel featues
–>Enable ELF core dumps
不是很明白它的意思,于是查阅如下:

转自http://blog.youkuaiyun.com/onlyonename/article/details/8120050

    在Unix/Linux中,有时程序并未经过彻底的调试,使得它们有可能在执行的时候出现一些比如段错误之类的情况,此时可能会导致核心转储(core dumps)。

套用《Classis Shell Scripting》一书的解释:
“在Unix系统中,常将‘主内存’(main memory)称为核心(core),因为在使用半导体作为内存材料之前 ,便是使用核心(core)。而核心映像(core image)就是‘进程’(process)执行当时的内存内容。当进程发生错误或收到‘信号’(signal)而终止执行时,系统会将核心映像写入一个文件,以作为调试之用,这就是所谓的核心转储(core dumps)。”

在Unix/Linux中,有时程序并未经过彻底的调试,使得它们有可能在执行的时候出现一些比如段错误之类的情况,此时可能会导致核心转储(core dumps)。

套用《Classis Shell Scripting》一书的解释:
“在Unix系统中,常将‘主内存’(main memory)称为核心(core),因为在使用半导体作为内存材料之前 ,便是使用核心(core)。而核心映像(core image)就是‘进程’(process)执行当时的内存内容。当进程发生错误或收到‘信号’(signal)而终止执行时,系统会将核心映像写入一个文件,以作为调试之用,这就是所谓的核心转储(core dumps)。” 

disable core dumps可以节约4K空间。

### 核心转储的含义 “核心转储”指的是在Unix/Linux系统中,当某个程序由于发生严重错误(如段错误、非法指令等)而异常终止时,操作系统会将该程序当时的内存状态保存到一个文件中,以便后续进行调试分析。这种机制被称为**核心转储**(core dump)。核心转储文件包含了进程崩溃时的完整内存映像,包括堆栈信息、寄存器状态以及内存中的数据内容[^1]。 核心转储的主要作用是帮助开发人员定位和修复导致程序崩溃的问题。通过分析核心转储文件,可以查看程序在崩溃时刻的调用栈、变量值以及其他关键调试信息。 ### 核心转储的技术背景 核心转储通常由某些特定的信号触发生成,例如: - **SIGSEGV**(段错误) - **SIGABRT**(程序主动调用`abort()`) - **SIGFPE**(浮点数运算异常) - **SIGILL**(非法指令) 当这些信号未被捕获处理或默认行为未被修改时,系统会生成核心转储文件[^4]。核心转储文件的生成还依赖于系统的配置,例如是否启用了核心转储功能以及核心文件的存储路径和命名规则。 以下是一些常见的核心转储配置命令: ```bash # 启用core文件的文件名中添加pid作为扩展 echo "1" > /proc/sys/kernel/core_uses_pid # 设置core文件的输出路径和文件名格式 echo "/home/boy/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern ``` 其中: - `%e` 表示程序名称。 - `%p` 表示进程ID。 - `%t` 表示生成core文件的时间戳[^3]。 ### 核心转储的应用场景 核心转储广泛应用于以下几个领域: 1. **软件调试**:当程序在生产环境中崩溃时,核心转储可以帮助开发人员重现问题并分析原因。 2. **性能优化**:通过分析核心转储文件,可以了解程序崩溃前的运行状态,从而发现潜在的性能瓶颈。 3. **故障诊断**:在分布式系统或服务器集群中,核心转储可以作为日志的一部分,用于快速定位硬件或软件层面的问题。 对于C/C++程序而言,核心转储尤其重要,因为这类语言缺乏内置的异常处理机制,容易因内存访问越界、空指针解引用等问题导致程序崩溃。而对于Java或其他高级语言程序,虽然JVM提供了较为完善的异常处理机制,但在某些极端情况下(如JVM内部错误),也可能出现核心转储的情况[^2]。 ### 核心转储的限制与注意事项 尽管核心转储非常有用,但也存在一些限制和注意事项: - **磁盘空间占用**:核心转储文件可能非常大,尤其是对于内存密集型应用程序,因此需要合理设置存储路径和清理策略。 - **安全性**:核心转储文件可能包含敏感数据,因此应妥善保管,避免泄露。 - **调试工具支持**:核心转储文件需要使用专业的调试工具(如GDB)进行分析。例如,使用GDB加载核心转储文件的方法如下: ```bash gdb <可执行文件路径> <core文件路径> ``` 加载后,可以通过`bt`命令查看调用栈,进一步分析崩溃原因。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值