Linux C程序Core Dump了怎么办?core dump文件怎么分析

在 Linux C 编程中,core 通常指的是 Core Dump(核心转储文件)。

当程序发生严重错误(如段错误 Segmentation Fault、非法指令、除零错误等)而崩溃时,Linux 内核会将该进程当时的内存状态、寄存器信息、堆栈跟踪等数据保存到磁盘上的一个文件中,这个文件就是 Core Dump 文件。

Linux GDB core dump分析
加载中
Linux GDB core dump分析

Core Dump 的作用

  1. 调试崩溃程序:通过 gdb 等工具分析 core 文件,定位崩溃原因。
  2. 记录运行时状态:包括变量值、调用栈、内存布局等。
  3. 生产环境排查问题:尤其在无法复现的偶发 bug 中非常有用。

如何生成 Core Dump

检查当前是否允许生成 Core Dump

ulimit -c
  • 如果输出为 0,表示禁止生成 core 文件。
  • 如果输出为非零数字(如 1024),表示允许生成,且限制大小为 1024 KB。

启用 Core Dump

ulimit -c unlimited   # 允许生成无大小限制的 core 文件

Linux C程序Core Dump了怎么办?core dump文件怎么分析

注意:ulimit 设置只对当前 shell 及其子进程有效,如需永久生效,可写入 /etc/security/limits.conf 或 /etc/profile。

指定 Core 文件生成路径和名称

通过 /proc/sys/kernel/core_pattern 控制:

cat /proc/sys/kernel/core_pattern
# 默认可能是: core
# 可修改为: /tmp/core.%e.%p   (%e 是程序名,%p 是 PID)

修改方法:

echo "/tmp/core.%e.%p" | sudo tee /proc/sys/kernel/core_pattern

常用占位符:

  • %e:可执行文件名
  • %p:进程 PID
  • %t:时间戳
  • %u:用户 ID
  • %g:组 ID

触发 Core Dump 的常见信号

以下信号会导致程序崩溃并生成 core dump(如果未捕获):

信号 含义
SIGSEGV 段错误(访问非法内存)
SIGABRT 主动 abort(如

Linux C程序Core Dump了怎么办?core dump文件怎么分析

assert() 失败)

SIGFPE浮点异常(如除零)
SIGILL非法指令
SIGBUS总线错误(如访问未对齐内存)

使用 GDB 分析 Core 文件

假设你有一个可执行文件 myapp 和一个 core 文件 core.myapp.12345:

gdb ./myapp core.myapp.12345

进入 GDB 后常用命令:

(gdb) bt          # 查看调用栈
(gdb) frame 3     # 切换到第3层栈帧
(gdb) print var   # 打印变量值
(gdb) list        # 查看源码
(gdb) info registers # 查看寄存器状态

C 程序中手动触发 Core Dump

你可以用 abort() 或 raise(SIGSEGV) 手动触发:

#include <stdlib.h>
#include <signal.h>
int main() {
    abort();  // 发送 SIGABRT,生成 core dump
    // 或 raise(SIGSEGV);
    return 0;
}

注意事项

  1. 权限问题:确保程序有权限写入 core 文件目录。
  2. Linux C程序Core Dump了怎么办?core dump文件怎么分析

  3. 磁盘空间:确保目标分区有足够空间。
  4. ASLR(地址空间布局随机化):可能影响 core 文件分析,调试时可临时关闭:
    echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
  5. 压缩 Core 文件:可通过 core_pattern 指定压缩工具,如:
    echo "|/usr/bin/gzip -c > /tmp/core.%e.%p.gz" | sudo tee /proc/sys/kernel/core_pattern

示例:完整调试流程

编写一个会段错误的程序:

// crash.c
#include <stdio.h>
int main() {
    int p = NULL;
    p = 42;  // 段错误
    return 0;
}

编译:

gcc -g -o crash crash.c

启用 core dump:

ulimit -c unlimited
  1. 运行程序,触发崩溃,生成 core 文件。

  2. 用 GDB 分析:

gdb ./core.crash.<PID>

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/477527.html

赞 (0)
Farpoint是什么?farpoint控件用法详解
上一篇 2026年7月10日 01:54
libtiff python怎么用?libtiff python读取tif文件报错
下一篇 2026年7月10日 01:57

相关推荐

  • 我的世界服务器1g能承载多少人?,什么配置好?

    对于《我的世界》服务器而言,1G内存通常能稳定承载10至15名玩家,前提是使用优化后的服务端如Paper或Purpur,并合理配置插件和世界资源, 这个范围是在多数小型服务器运维实践中反复验证的结果,但实际数字会因服务端软件、玩家活跃度、插件复杂度以及地图加载范围产生明显波动,下面从多个维度拆解1G内存的真实承……

    2026年8月13日
    700
  • 服务器主机和正常电脑有何区别?专属主机与云服务器怎么选?

    服务器主机与正常电脑的根本区别在于硬件架构、稳定性和长时间无故障运行能力,而专属主机与普通云服务器的核心差异则在于资源是否独占、性能隔离程度以及合规性要求,服务器主机和正常电脑的区别:硬件、系统与稳定性硬件配置差异:为什么服务器主机更“抗造”服务器主机从设计之初就面向7×24小时不间断运行,硬件选材与普通电脑完……

    2026年8月5日
    700
  • Servarica加拿大VPS补货了吗?加拿大免备案VPS推荐

    Servarica加拿大SSD大硬盘VPS近期补货,4核4G内存搭配100Mbps不限流量或1Gbps带宽4TB月流量套餐,年付仅需$48,是目前性价比极高的跨境建站与数据存储方案,对于许多需要低成本、高稳定性海外服务器的用户来说,Servarica一直是一个绕不开的名字,这家位于加拿大的服务商以“大硬盘”和……

    2026年6月26日
    1900
  • Apache多域名怎么配置?Apache虚拟主机多域名配置教程

    Apache配置多域名的核心在于利用VirtualHost指令,通过ServerName和ServerAlias精准匹配不同域名,并配合DocumentRoot指向各自的网站根目录,即可实现单IP托管多个独立站点,在服务器资源有限的情况下,让一台Apache服务器承载多个网站是极具性价比的选择,这不仅能节省VP……

    2026年6月6日
    3700
  • Android网络连接时间是多少?如何设置手机网络超时

    Android网络连接时间主要取决于信号强度、网络类型(4G/5G/Wi-Fi)及系统后台优化,通常4G网络建立连接需1-3秒,5G网络在信号良好时仅需0.5-1秒,而Wi-Fi连接通常在1-2秒内完成,若出现长时间卡顿则需排查信号干扰或系统设置问题,Android网络连接耗时背后的技术逻辑理解连接时间的长短……

    2026年6月14日
    3900
  • 京东云11.11云主机秒杀低至1元是真的吗?京东云双11优惠活动有哪些

    京东云11.11云上热爱节期间,云主机秒杀价格低至1元,参与评价可获续费优惠,整体抢购低至3.5折,更有机会抽取iPhone 13大奖,对于正在寻找高性价比云计算资源的个人开发者、初创团队以及中小企业而言,这个时间节点不仅是技术升级的契机,更是降低基础设施成本的黄金窗口,京东云此次推出的活动,通过极致的价格策略……

    2026年7月3日
    1200
  • 辽宁丹东联通dns的服务器地址是多少?,怎么设置?

    辽宁丹东联通DNS服务器地址为:主DNS 202.106.0.20,备DNS 202.106.148.1,这两个地址长期稳定,覆盖丹东地区所有联通宽带用户,是联通官方推荐的配置,为何需要手动设置DNS?大多数人使用网络默认自动获取DNS,但手动设置能解决不少隱性问题,自动获取的DNS有时会被劫持,导致网页跳转广……

    2026年8月20日
    600
  • 32670t容量硬盘服务器贵不贵,多少钱一台

    一台搭载32670T容量的硬盘服务器,整体采购成本通常在38万至55万元人民币之间,具体取决于硬盘类型、品牌配置及服务商资质,拆解32670T硬盘服务器的成本构成32670T这个数字,对普通用户是天方夜谭,但对做冷数据存储、视频监控归档或云存储底层的朋友来说,是刚需,这个容量拆解下来,基本是两种主流方案:全机械……

    2026年8月23日
    000
  • 按什么键可以切换监控画面?监控画面一键适应怎么设置

    监控画面的切换与一键适应操作,核心在于正确使用数字快捷键、功能键(如F1-F12)以及鼠标滚轮或右键菜单的配合,在大多数主流监控系统中,数字键直接对应通道画面,双击鼠标左键或使用特定功能键可实现画面的“一键适应”与放大,这是提升监控效率最直接的操作逻辑,掌握这些快捷操作,不仅能解决画面比例失调、黑边遮挡等问题……

    2026年3月22日
    13100
  • 网络服务器多少钱一天?,服务器租用价格多少?

    网络服务器按天租用的价格跨度很大,从几十元到几百元不等,核心取决于配置、带宽和计费模式,多数云服务商并不直接提供按天套餐,而是以小时计费后折算,或通过包天模式实现,实际部署中,一台入门级云服务器(1核1G)按天成本约10-30元,中等配置(2核4G)约30-80元,高配(4核8G)则在80-200元区间,物理服……

    2026年8月18日
    700

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注