在 Linux 开发过程中,Segmentation fault(段错误)是每个程序员的噩梦。这种错误通常发生在程序试图访问未授权的内存地址时。为了快速定位问题,Linux Core Dump 技术成为了不可或缺的调试利器。本文将深入浅出地教你如何配置和利用 Core Dump 文件进行 Segmentation fault 调试。
Core Dump(核心转储)是指当程序由于异常(如段错误)而崩溃时,操作系统将程序当时的内存状态、寄存器信息、堆栈指针等数据记录下来的文件。它是研究 Linux 进程信号 触发异常后的第一手现场资料。
默认情况下,Linux 系统为了节省磁盘空间,限制了 Core 文件的大小为 0。我们需要通过 ulimit 命令来开启它:
ulimit -c unlimited * 注:此命令仅对当前终端有效。若想永久生效,需修改 /etc/security/limits.conf 文件。
我们可以自定义 Core 文件的生成路径和命名规则。修改 /proc/sys/kernel/core_pattern 文件:
echo "/tmp/core-%e-%p-%t" | sudo tee /proc/sys/kernel/core_pattern 这里的参数含义:%e 是程序名,%p 是进程号,%t 是时间戳。这是完成 Core Dump 开启教程 的关键步骤。
编写一个简单的 C 程序 test.c,故意制造段错误:
#include <stdio.h>int main() { int *ptr = NULL; *ptr = 10; // 触发 Segmentation fault return 0;} 编译运行:gcc -g test.c -o test && ./test。你会发现目录下生成了一个名为 core-test-xxxx 的文件,这就是 Linux 调试利器 为我们准备的现场证据。
有了 Core 文件后,我们可以直接进入“凶案现场”:
gdb ./test /tmp/core-test-xxx 进入 GDB 后输入 bt (backtrace),你将能直接看到程序在哪一行崩溃。通过分析 Linux 进程信号 (SIGSEGV),我们可以轻松完成 Segmentation fault 调试。
本文涉及关键词:
Linux Core Dump, Segmentation fault 调试, Linux 进程信号, Core Dump 开启教程
本文由主机测评网于2026-03-20发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:http://www.vpshk.cn/20260332371.html