一、介绍
Google breakpad是一个跨平台的崩溃转储和分析框架和工具集合。而且BreakPad本来就是为了解决C、C++异常捕获而开发的。BreakPad支持跨平台,很容易在Qt项目中使用,使跨平台的应用实现跨平台异常捕获。这里介绍一下qBreakPad的使用。
二、编译
步骤
1、下载qBreakPad源码进行解压,目录如下:
2、下载BreakPad源码放入qBreakPad源码目录third_party\breakpad下,如下:
3、使用QT打开handler文件夹下qt工程
4、运行工程
可见编译成功了,我们去对应文件夹看到库也成功的生成了,这样我们就能使用qBreakPad了。
三、使用
这里我们创建一个名为qBreakPad的qt工程去进行测试使用,工程结构如下
其中qbreakpadlib文件夹包含的是头文件和lib库,其结构如下
lib目录下分别编译了debug和release版本库放入,上述操作完毕后需要在pro里面添加对应库和头文件路径,配置如下
修改pro后记得重新qmake一下,配置才会生效。这样我们就可以编写代码进行使用了,
1 #include "mainwindow.h"
2 #include <QApplication>
3 #include "QBreakpadHandler.h"
4 #include <QLabel>
5
6 void crash()
7 {
8 QLabel *label = nullptr;
9 label->setText(QString("hello"));
10 }
11
12 int main(int argc, char *argv[])
13 {
14 QApplication a(argc, argv);
15 MainWindow w;
16 w.show();
17 //设置生成的dump文件位置
18 QBreakpadInstance.setDumpPath("crash");
19 crash();
20 return a.exec();
21 }
运行demo,程序会异常结束,我们去对应生成exe的目录看看生成的文件,里面生成了crash文件夹,崩溃文件就放在里面
我们使用winDbg查看这个dump信息,
可以看到提示的非常明显,是在19行中QLabel调用setText导致崩溃的,这样我们就很快能够知道为题所在了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2022-07-04 Qt 进程守护程序(windows、linux)
2022-07-04 Win10怎么设置开机自动启动程序?
2022-07-04 Eigen SSE兼容,内存分配,和std容器的兼容理解