Qt生成coredump文件(支持arm和x86架构)
简介:
coredump一般都在执行文件崩溃时自动生成的,用来定位造成程序崩溃的原因。
ubuntu下的设置coredump步骤(linux的x86架构)
1、正常情况下coredump生成路径需要在root权限下才能设置生效,所以我们需要进入root模式。
sudo su
2、设置coredump生成路径。
sudo mkdir /home/core
echo /home/core/core_%e_%t_%p > /proc/sys/kernel/core_pattern
配置说明:
%%单个%字符
%p代表dump进程的进程ID
%u代表dump进程的实际用户ID
%g代表dump进程的实际组ID
%s导致本次core dump的信号
%t core dump的时间 (由1970年1月1日计起的秒数)
%h主机名
%e程序文件名
3、查看coredump大小限制。
ulimit -c
4、如果大小为0,则需要设置大小,如不做限制。
ulimit -c unlimited
5、创建一个会崩溃的程序。
#include <QApplication>
#include <QDebug>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QVector<QString> ss;
qDebug()<<ss[100];
return a.exec();
}
6、运行,观察是否生成core文件。
7、gdb查看(ubuntu安装gdb比较容易,这里不做赘述)
arm下的设置coredump步骤
步骤其实跟x86的差不多,首先我们通过一个串口助手进入arm后台。
1、设置coredump路径
mkdir /opt/core
echo /opt/core/core_%e_%t_%p > /proc/sys/kernel/core_pattern
2、查看coredump大小限制。
ulimit -c
3、设置限制为无限制
ulimit -c unlimited
4、创建一个对应ARM平台的程序,然后运行。
5、观察coredump文件是否在对应目录生成成功。
注意:coredump占用外存极大,如需使用,请做好限制。
6、gdb调试
ARM架构gdb编译教程