Google
家的Breakpad
因为其跨平台的特性,在崩溃信息收集上报方面有着挺广泛的应用。但是在Qt
有一个更好的封装库,该库将Breakpad
多进行了一层的封装,使得开发者仅需进行一次编写,代码就可以处处运行。当然,不同的平台还是需要分别的编译的。
现在qBreakpad
的官方readme
有点过期,并且说的也不是很详细,所以此处就着重讲一下Linux
平台下的编译吧。
clone
源代码
git clone --recursive https://github.com/buzzySmile/qBreakpad.git
加上递归clone
的选项后,就不再需要去单独的下载Breakpad
了
- 编译
编译是比较麻烦的地方,也困扰了我好一段时间。
clone
下来后的仓库会有一个handler
的文件夹,利用qtcreator
打开其中的handler.pro
文件,而后对其进行编译即可。
注意此处会有一个大问题。qtcreator
会提示无法找到执行档。我被卡在这个地方好一会儿,但如果此时去查看编译输出,可以看到编译器正常退出了。原因在于,我们此处编译的是库,并不是一个可执行文件,所以qtcreator
就找不到一个入口去执行程序,就会提示我们无法找到执行档。其实此时是已经完成编译的了。
之后我们在编译输出文件夹里找到qBreakpad.a
文件,将该文件复制到handler
下,整个编译工作就算完成了。因为有pro
文件存在的缘故,故在window
和mac
下,情况应该是一样的。(此处以后再去做尝试)
此处额外说一句,第一级目录下的qBreakpad.pro
是作者编写的一个完整的示例程序,该工程包含了qBreakpad
的用法,有兴趣可以看看。当然,需要在完成上述的编译流程之后才可以使用。
- 使用
qBreakpad
是当做一个第三方库来引入现有的Qt
程序中的,作者已经给我们编写好了pri
文件,所以我们只需要在pro
文件中添加一句对其引用的语句即可。如下
include(libs/qBreakpad/qBreakpad.pri)
而后直接在main.cpp
中引用#include "QBreakpadHandler.h"
。可以的话,在main
函数的开头使用即可。