摘要:
使用systemd管理的linux系统,默认情况下即开启了转储,当程序确实coredump的时候,你并不能在当前目录下找到转储文件。找到转储文件,需要systemd提供的特定命令工具:coredumpctl。

1.确认是否开启core dump(核心转储)
1.1 ulimit -c
查看系统是否限制了转储空间(通常默认是unlimited),为0则表示系统没有预留转储空间,那么程序崩溃后是找不到coredump文件的。
在这里插入图片描述在这里插入图片描述如上图所示,虽然coredumpctl list可以查看到coredump的进程号等信息,却无法进入转储文件。
1.2 ulimit -c unlimited
为系统指定转储限制(不限制或者限制为16MB)
在这里插入图片描述
2.查看coredump信息
2.1 coredumpctl list
查看转储文件,EXE是发生coredump的可执行文件,PID是coredump的进程号
在这里插入图片描述
2.2 coredumpctl list --since=DATE
如果设备上转储文件太多,可以用–since选项过滤出 某天以后的coredump文件
在这里插入图片描述
2.3 coredumpctl list --until=DATE
如果设备上转储文件太多,可以用–since选项过滤出 直到某天的coredump文件
在这里插入图片描述
2.4 coredumpctl list -r
按时间逆序显示所有的core文件(最近产生的最先显示)
在这里插入图片描述
2.5 coredumpctl info
查看最近一次coredump的信息,后面加进程号的话,查看指定coredump的信息
在这里插入图片描述
2.6 coredumpctl dump
显示匹配到的第一条coredump信息,如果后面接进程号的话,查看指定coredump的信息
在这里插入图片描述
3.分析coredump文件
3.1coredumpctl gdb pid
使用gdb分析coredump文件
在这里插入图片描述
3.2coredumpctl debug
进入匹配到的第一条coredump的调试器,后面加进程号的话,进入指定coredump的调试器
在这里插入图片描述在这里插入图片描述
3.3 捕捉回溯——导出崩溃调用栈
Set logging file mybacktrace.txt
Set logging on
Thread apply all bt full
在这里插入图片描述在这里插入图片描述

在这里插入图片描述
3.4 coredumpctl -o corefile dump pid
使用coredumpctl导出coredump文件,Systemd控制生成的core文件使用特定的格式进行了压缩,可用coredumpctl命令获取原生可调试用的coredump文件
在这里插入图片描述
在这里插入图片描述

Logo

更多推荐