1.打开coredump文件生成开关
查看开关是否打开:ulimit -a
如果core file size 为0,则为关闭。
执行:ulimit -c 10240 将其coredump文件大小设置。
2.coredump文件保存位置:
/proc/sys/kernel/core_pattern文件可以控制core文件的保存位置和文件格式。
例如:将所有的core文件生成到/var/crash目录下,文件名的格式为:core-pid-时间戳
echo “/var/crash/core-%e-%p-%t” | sudo dd of=/proc/sys/kernel/core_pattern
使用这个方式修改的原因在于/proc/sys/kernel目录下为镜像文件,不能直接使用vim进行修改
以上都是临时修改,想要永久修改,需要编辑如下文件。
永久修改生成coredump文件开关,设置为生成大小无限制:
vim /etc/security/limits.conf
添加如下两行:
* soft core unlimited
* hard core unlimited
重启生效
永久修改路径:
sudo vi /etc/sysctl.conf
添加如下两行:
kernel.core_pattern = /var/crash/core_%e_%p_%t
kernel.core_uses_pid = 0
执行sudo sysctl -p /etc/sysctl.conf或重启后生效
加载coredump文件的方式:
gdb <executable> <core-dump-file>
在GDB启动后,你可以使用各种调试命令来检查程序崩溃时的状态,例如:
bt
或backtrace
:查看堆栈跟踪。
frame
:切换或查看当前堆栈帧。
info locals
:查看当前堆栈帧的局部变量。
list
或l
:查看源代码。
p
:打印表达式的值。使用
quit
或q
命令退出GDB