天天看点

linux下Qt编程 使用Google Breakpad捕获异常的使用步骤

1.下载源码

1)下载breakpad: breakpad源码可在​​https://github.com/google/breakpad.git​​ 

从​​https://chromium.googlesource.com/linux-syscall-support/​​下载该文件(这个需要FQ)

将linux_syscall_support.h放到breakpad/src/third_party/lss/中

要新建lss目录复制文件到该目录。

2. 编译

控制台cd breakpad 进入目录

运行指令 ./configure

运行指令 make -j4

运行指令 sudo make install

linux下Qt编程 使用Google Breakpad捕获异常的使用步骤
linux下Qt编程 使用Google Breakpad捕获异常的使用步骤
linux下Qt编程 使用Google Breakpad捕获异常的使用步骤

3. 配置Qt环境

1)在.pro工程文件里面添加配置,链接到库 记得要定义:DEFINES += USE_BREAKPAD

linux下Qt编程 使用Google Breakpad捕获异常的使用步骤

2)为了生成可读的stack trace, breakpad需要你将binaries里的调试符号(debugging symbols)转换成基于文本格式的symbol files。首先确保你在编译代码的时候加上 -g 参数来生成带调试符号。  

即在Pro文件里面添加:QMAKE_CXXFLAGS += -g

4. 测试breakpad,生成dmp文件

linux下Qt编程 使用Google Breakpad捕获异常的使用步骤
linux下Qt编程 使用Google Breakpad捕获异常的使用步骤

运行后崩溃报错:

linux下Qt编程 使用Google Breakpad捕获异常的使用步骤

生成了dmp文件:

linux下Qt编程 使用Google Breakpad捕获异常的使用步骤

5. 将dmp文件转换成能看的懂的txt文件

1)获取symbol文件

命令:dump_syms  ~/wjg/build-DC520-debug/DC520  >  DC520.sym

DC520是我的可执行文件 如图:

linux下Qt编程 使用Google Breakpad捕获异常的使用步骤

2)生成Stack Trace

(1)为了可以使用 ``minidump_stackwalk` 工具来生成stack trace,你需要将文件放置在一定的目录结构,symbol file的第一行说明了需要放置的目录结构

(2)查看该文件头信息:# head -n1 DC520.sym

(3)并根据该信息建立文件夹,并放入符号文件

linux下Qt编程 使用Google Breakpad捕获异常的使用步骤

(4) 解析dmp文件

Sudo minidump_stackwalk ~/wjg/build-DC520-debug/crash/9e907142-d52c-47dd-6865798a-be243b8c.dmp ./symbols > DC520.txt

6. 查看转换成txt文档的日志文件

linux下Qt编程 使用Google Breakpad捕获异常的使用步骤

至此成功用breakpad抓取崩溃报告并解析完成