Qt Linux中使用qBreakpad的应用
2022/7/12 5:20:10
本文主要是介绍Qt Linux中使用qBreakpad的应用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1.下载源码
下载Breakpad源码 下载地址:https://github.com/google/breakpad 下载LSS源码 下载地址:https://github.com/ithaibo/linux-syscall-support 下载qBreakpad源码 下载地址:https://github.com/buzzySmile/qBreakpad
2.编译qBreakpad
a.将Breakpad和LSS的源代码放到qBreakpad的third_party目录中
b.打开handle工程编译即可获得libqBreakpad.a的库文件。
3.调用breakpad
a.库和文件拷贝,libqBreakpad.a和头文件QBreakpadHandler.h、QBreakpadHttpUploader.h、call_once.h、singleton.h功4个文件。
b.pro文件中添加如下代码:
############ for qBreakpad ############ # qBreakpad中需要使用到network模块 QT += network # 启用多线程、异常、RTTI、STL支持 CONFIG += thread exceptions rtti stl # without c++11 & AppKit library compiler can't solve address for symbols CONFIG += c++11 macx: LIBS += -framework AppKit # 配置头文件搜索路径和链接库路径 unix:!macx: LIBS += -L$$PWD/qBreakpad/lib/ -lqBreakpad INCLUDEPATH += $$PWD/qBreakpad/include DEPENDPATH += $$PWD/qBreakpad/include unix:!macx: PRE_TARGETDEPS += $$PWD/qBreakpad/lib/libqBreakpad.a ############ for qBreakpad ############
c.代码中调用,需要引用头文件,如“#include "qBreakpad/include/QBreakpadHandler.h"”。
QBreakpadInstance.setDumpPath("crashes"); // 设置生成dump文件路径
d.增加一行会引起程序崩溃的代码,编译后运行,即可生成dump文件。
e.debug程序附带调试信息
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE_WITH_DEBUGINFO QMAKE_LFLAGS_RELEASE = $$QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO
4.生成dump_syms和minidump_stackwalk工具
dump_syms:导出程序的符号文件。
minidump_stackwalk:生成堆栈调用信息,定位bug位置。
a.将lss源码放入breakpad中的src/third_party/lss文件夹中。
b.到breakpad目录下面,给configure添加权限,chmod 755 configure,执行配置“./configure”。
c.执行编译“sudo make”,即可在"src/tools/linux/dump_syms"中生成“dump_syms”工具,在“src/processor”中生成“mindump_stackwalk”工具。
d.安装执行“sudo make install”。
5.使用
a.生成符号文件,其中“qBreakpadTest”是应用程序的全称
dump_syms ./qBreakpadTest > qBreakpadTest.sym
b.创建symbos文件夹,进入后创建程序名同名的文件夹,进入后"*.sym"文件中第一行中一串数据为文件名创建文件夹,进入后将上一步的sym文件拷贝至此,如下图:
c.生成崩溃处的调用堆栈信息
minidump_stackwalk ./crashes/7211c8b8-126d-4de2-7f8f00a4-db86eecc.dmp ./symbols > error.log
这篇关于Qt Linux中使用qBreakpad的应用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南