ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Qt Linux中使用qBreakpad的应用

2022-07-11 13:38:34  阅读:222  来源: 互联网

标签:文件 Qt dump 生成 syms 源码 qBreakpad Linux


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,dump,生成,syms,源码,qBreakpad,Linux
来源: https://www.cnblogs.com/AlexSun-2021/p/16466044.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有