《使用systemd的coredump工具分析程序崩溃问题》

摘要:
使用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文件
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值