一篇好的实例文章,按照里面的内容做了Demo: Using Google Breakpad with Qt Breakpad 库地址:Breakpad 库地址 另一篇相关的文章:Qt and Google breakpad Windows/Linux/MacOS
以上文章中介绍了Windows和Linux下崩溃捕捉的方法,只不过Windows下需要有pdb文件,而我们当前的代码时在MinGW构建套件下能够正常编译运行的,而要生成pdb文件则需要使用MSVC构建套件.最后好不容易搭建好了MSVC套件,发现当前代码编译过程中报了大量的错误(很多类型不能够识别,有的地方像this,if都不能够识别,一些头文件不能够打开,还有很多syntax error…),感觉为了把这些东西调通需要花费的精力和时间不值得.暂时放弃了这种方案.
MSVC2010版qt下载路径5.6.3的下载地址为另一个位置VS中对应的qt插件位置,可以根据版本选择对应的
Qt 使用 Google Breakpad 捕获程序崩溃报告(dump文件)Linux环境下QT中使用google breakpad捕获程序崩溃异常
这个对Breakpad的原理做了介绍,但没有按照它的代码去做:12.5-使用Qt实现跨平台C++崩溃捕获,看这一篇就足够了(Breakpad)
qt处理程序异常崩溃:在 不过这种方式也是需要时MSVC套件下进行的
看该文章中最后一个方法:Qt dump崩溃调试简单整理 这个方法可以在mingw套件环境中对崩溃的信息进行记录,美中不足的是可以对exe进行很好的定位,而对于内部的dll则不能记录信息.
linux下使用addr2line 这个文章说可以通过动态链接库的偏移地址来找到动态链接库的崩溃位置,具体能不能用还没有去试.
addr2line命令最后的地址参数可以为多个,显示多个位置对应的源码行号
dmp文件需要依赖.pdb文件才能分析,可以使用VS或者WinDbg分析.
pdb只能在windows下MSVC套件中产生.
默认情况下,Debug模式才会生成.pdb文件,也可以配置成Release模式下也生成.
5.遇到的问题部分记录
1.使用MSVC版本的Qt: 在Win7环境中,Qt MSVC2013版本安装成功后,该套件缺少对应的编译器和调试器,安装完VS2013后仍然没有完整提供.后来安装了开发包WDK 8.1问题才解决(注意VS2013对应的是8.1).QT - error: LNK1327: 运行 rc.exe 期间出错
将MinGW编译器编译通过的代码放到MSVC编译器中,或者VS中编译会报"windwos.h":No such file or directory的错误,解决办法如下:“windwos.h”:No such file or directory解决办法
2.使用VS2013,安装Qt5.6的插件VS2013 下安装 Qt5【问题】VS2010 VS2012 VS2013 安装之后提示 “无法打开文件 kernel32.lib” 解决方案