Qt下使用qBreakpad生成dump进行异常定位

本文主要目的,记录qbreakpad使用方法,避免遗忘

环境配置

QTC版本:QT5.14.2
编译器:msvc 2017 64bit
其他版本也可,需自行测试验证

qBreadpad源码下载

打包整理gitee,链接 https://gitee.com/ylei123/qbreakpad-pub,下载源码可直接编译(上述环境下已验证)。package文件夹下为源码压缩包,可自行解压(也可源码直接编译,跳过此步骤)

可以将图中两压缩文件解压后放置到qBreakpad解压目录下的“third_party”目录下,完成后的目录如下图所示
在这里插入图片描述

源码编译

目录下找到工程文件“qBreakpad.pro”,打开工程后,工程目录下分3个子工程目录

  • demo工程 演示程序,program演示生成dump文件,reporter为上报dump文件功能
  • handler静态库工程 封装了Breadkpad,编译可获得qBreakpad.lib静态库文件
  • tests为测试工程

源码编译后可在handler下目录下找到生成的qBreakpad.lib静态库文件

使用库文件

打包qBreakpad,目录可按下图构建
在这里插入图片描述
其中 lib目录下存放对应静态库文件

库使用

将上述qBreakpad打包到要使用的工程目录下,按下图步骤进行静态库引用
在这里插入图片描述在这里插入图片描述
pro工程文件下自动添加在这里插入图片描述
工程源码main函数下应用头文件
#include “qBreakpad/include/QBreakpadHandler.h”
在这里插入图片描述
设置路径后调用

注:release编译构建,需要在构建目录下生成与执行程序同名的.pdb,执行程序文件和pdb文件在发包后需要进行保存,便于之后的异常定位

使用windbg对dump文件进行异常定位

没有改程序,可在文章资源下载,可以使用网盘下载
链接: https://pan.baidu.com/s/1AWIbSWfTmThyRSxsTVRLKA 提取码: CSDN
1.导入.exe 和.pdb文件目录
在这里插入图片描述
这里可以将程序在编译环境下打包,让dll、exe、pdb在同一文件目录下,不然需要导入多个目录文件(用“,”间隔)比较麻烦,建议使用打包目录

2.导入源码目录
在这里插入图片描述
3.导入dump文件
在这里插入图片描述
4.所有文件导入成功后,在命令栏敲下"!analyze -v",等待分析完成,查看异常位置

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
qbreakpad是一个用于捕获应用程序崩溃信息的开源库,它可以在Windows操作系统上生成dump文件以帮助开发人员进行故障排查和分析。 若在使用qbreakpad时未能生成dump文件,可能是以下原因之一: 1. 未正确集成qbreakpad库:qbreakpad的集成过程可能需要一些配置和设置,如链接与编译选项的修改等。如果未正确集成qbreakpad库,就无法生成dump文件。 2. 未进行符号表设置:符号表用于将崩溃时的地址转化为函数名和行号,使得dump文件更加可读和有用。如果未正确设置符号表,在生成dump文件中将无法提供函数名和行号信息。 3. 未捕获到崩溃事件:生成dump文件的前提是程序崩溃或异常终止。如果程序未出现崩溃或异常终止的情况,自然也就无法生成相应的dump文件。 4. 程序权限不足:有些操作系统和程序环境可能需要特定的权限才能生成dump文件。如果程序未具备足够的权限,就无法生成dump文件。 针对以上问题,可以按照以下步骤进行排查和解决: 1. 确认是否正确集成了qbreakpad库,并检查相关的配置和设置是否正确。 2. 确保在程序中正确设置了符号表,以便生成有用的dump文件。 3. 确认程序是否有可能触发崩溃或异常终止的情况,并模拟相应的情况。 4. 检查程序的运行权限,确保程序具备生成dump文件所需的权限。 通过以上排查和解决步骤,应能够解决qbreakpad在Windows系统下未能生成dump文件的问题。如果问题仍然存在,可以进一步查阅相关资料或向qbreakpad的支持渠道寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值