当把程序安装至Ubuntu的开机启动项后,发现程序崩溃无法启动且非必现,可通过如下操作进行解析.
流程
1.Ubuntu开机启动后,/var/log/apport.log将保留程序崩溃日志,如:
ERROR: apport (pid 3702) Mon May 18 10:43:13 2020: apport: report /var/crash/_opt_ros_kinetic_lib_test.0.crash already exists and unseen, doing nothing to avoid disk usage DoS
2.如有崩溃内容,将会把崩溃日志写入/var/crash/中,且名称为崩溃内容如:
/var/crash/_opt_ros_kinetic_lib_test.0.crash
解析
系统调试有两种方法,第一种为设置core大小,随后运行程序,产出崩溃内核,使用gdb 程序 core形式进行分析
第二种为解压系统产出的.crash,使用解压出来的CoreDump文件进行gdb调试,目标现场较多
步骤
1.将.crash解压缩至其他目录
2.使用gdb对解压缩出来的CoreDump进行分析
解压缩
首先创建问题目录,如~/coreFile
mkdir ~/coreDir
将.crash解压至coreDIr
apport-unpack /var/crash/_ros_kinetic_lib_test.0.crash ~/coreDir
完成后,将会在~/coreDir中产生:
-rw-r--r-- 1 r