目录
Core Dump 是指程序在运行时因异常终止而生成的一种文件,记录了程序崩溃时的内存状态、调用栈、寄存器值和变量信息。
1、coredump文件产生
1.1 系统设置
一般linux系统默认不产生coredump文件,通过命令ulimit -c可以查看当前系统状态。
- 输出 0 表示禁止生成 Core Dump 文件。
- 输出一个正整数表示允许生成文件数量,unlimited指文件大小没有限制。
如果输出为0,可以通过以下命令更改:
ulimit -c unlimited
1.2 coredump文件保存路径
在 Linux 系统中,Core Dump 文件的默认产生路径由系统的配置决定,通常是程序运行时的工作目录,也就是程序执行时的当前目录。如果系统配置未更改,Core Dump 文件会直接生成在程序运行的当前目录下,文件名通常为 core 或类似 core.<pid>。可以通过查看或修改系统配置文件进行路径设置:
cat /proc/sys/kernel/core_pattern
echo "./core.%e.%p" | sudo tee /proc/sys/kernel/core_pattern
上述是将 Core Dump 文件生成到当前目录,文件名为 core.<程序名>.<PID>其中:
- %p:进程 ID。
- %u:进程的实际用户 ID。
- %g:进程的实际组 ID。
- %s:导致 Core Dump 的信号编号。
- %t:Core Dump 生成的时间戳。
- %h:主机名。
- %e:程序的文件名。
1.3 编译选项
在开发和调试过程中,为了生成有用的 Core Dump 文件,需要加上-g编译选项。
g++ -g -O0 -o demo main.cpp</