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

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

1.确认是否开启core dump(核心转储)
1.1 ulimit -c
查看系统是否限制了转储空间(通常默认是unlimited),为0则表示系统没有预留转储空间,那么程序崩溃后是找不到coredump文件的。
《使用systemd的coredump工具分析程序崩溃问题》_第1张图片《使用systemd的coredump工具分析程序崩溃问题》_第2张图片如上图所示,虽然coredumpctl list可以查看到coredump的进程号等信息,却无法进入转储文件。
1.2 ulimit -c unlimited
为系统指定转储限制(不限制或者限制为16MB)
《使用systemd的coredump工具分析程序崩溃问题》_第3张图片
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的信息
《使用systemd的coredump工具分析程序崩溃问题》_第4张图片
2.6 coredumpctl dump
显示匹配到的第一条coredump信息,如果后面接进程号的话,查看指定coredump的信息
《使用systemd的coredump工具分析程序崩溃问题》_第5张图片
3.分析coredump文件
3.1coredumpctl gdb pid
使用gdb分析coredump文件
《使用systemd的coredump工具分析程序崩溃问题》_第6张图片
3.2coredumpctl debug
进入匹配到的第一条coredump的调试器,后面加进程号的话,进入指定coredump的调试器
《使用systemd的coredump工具分析程序崩溃问题》_第7张图片《使用systemd的coredump工具分析程序崩溃问题》_第8张图片
3.3 捕捉回溯——导出崩溃调用栈
Set logging file mybacktrace.txt
Set logging on
Thread apply all bt full
《使用systemd的coredump工具分析程序崩溃问题》_第9张图片《使用systemd的coredump工具分析程序崩溃问题》_第10张图片

《使用systemd的coredump工具分析程序崩溃问题》_第11张图片
3.4 coredumpctl -o corefile dump pid
使用coredumpctl导出coredump文件,Systemd控制生成的core文件使用特定的格式进行了压缩,可用coredumpctl命令获取原生可调试用的coredump文件
《使用systemd的coredump工具分析程序崩溃问题》_第12张图片
《使用systemd的coredump工具分析程序崩溃问题》_第13张图片

你可能感兴趣的:(systemd,Linux技术)