在 Linux 系统中,生成 core dump 文件用于调试程序崩溃时的状态,能够帮助开发者分析程序崩溃的原因。下面是如何配置和使用 core dump 文件的详细步骤:
1.启用 Core Dump 文件的生成
1.1 查看和设置 Core Dump 文件大小限制
首先,查看当前系统是否允许生成 core dump 文件及其大小限制:
ulimit -c
如果返回值是 0,表示系统不允许生成 core dump 文件。 如果返回一个大于 0 的值,表示可以生成 core
文件,且该值表示允许的最大文件大小(以字节为单位)。
要启用生成 core dump 文件,并且设置为不限制其大小,可以运行:
ulimit -c unlimited
这会将 core dump 文件的大小限制设置为不限制。此设置仅对当前 shell 会话有效。如果想让它在每次启动时都生效,您需要将其添加到用户的 shell 配置文件中。
1.2 设置 core 文件的存储目录和命名格式
# 1.默认在当前程序执行目录下生成:core-程序名-程序pid-时间[core-test-3535-1734318249]
echo "core-%e-%p-%t" > /proc/sys/kernel/core_pattern
# 2.添加路径,可以把所有的core文件集中到一个文件夹
echo "/path/to/core-file/core-%e-%p-%t" > /proc/sys/kernel/core_pattern
2. core dump 用法
2.1 gcc 或 g++ 编译时,加 -g 再调试时可以看得更详细:
gcc -g test.c -o test
2.2 gdb 调试,找出出错的位置:
gdb ./test core-test-3535-1734318249