window平台下VS2013结合Qt的google breakpad异常捕捉
2016-08-26 18:09
309 查看
google-breakpad,这是谷歌的一个开源项目,是一个非常实用的跨平台的异常处理系统
开发工具 :
VS2013 +QT 5.3.1
源文件,以及需要搭建的环境文件 :
链接:http://pan.baidu.com/s/1cvDnae 密码:r1mn
其中项目文件.rar是我写的源码,googleBreakpad.rar是官方的示例,Python_X64_2.7.11_AnXia.zip是python的安装文件
首先对官方的的实例googleBreakpad进行编译(此处参考了http://blog.csdn.net/xiexievv/article/details/44673345的编译方法)
安装python 2.x.x就行
跳转到你下载文件的这个目录下“googleBreakpad\src\tools\gyp”
在gyp目录下打开控制台 (可以用在这个文件夹的文件路径中输入cmd或者在cmd下cd 到具体的路径,这个应该没什么障碍)输入命令:
如果报错,试试下面这个命令
这个时候,编译成功了,就会在你的\googleBreakpad\src\client\windows目录下生成一个.sln的解决方案文件,用VS打开,即可。
进入生成的解决方案后,生成所需要的lib库文件
这里有几个特别要注意的地方,我就是在这几各地方困扰了很久
如果需要把breakpad部署到自己的项目中,有两种方法。
①很直接也很蠢的方法,因为这毕竟是个开源项目,所以是直接提供源码的,你可以将你需要的头文件和源文件直接复制到你自己的工程目录下(我这里是直接将src文件夹复制到自己的项目文件目录下,因为后面要用的那些头文件里面会引用其它的头文件,就是以这个文件夹目录为基础目录的),然后按照需要在项目属性-> 配置属性 -> C/C++ -> 常规 ->附加包含目录 添加包含这些头文件和源文件的目标文件夹路径,如图所示:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/656608194bf2b01ba1f79f382cd767bf)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/39cd75f93ceb18b1573c0ff0bcf232bf)
②不直接使用源文件,而是使用官方源码所生成的库文件(lib文件),推荐使用这种方法,这里就是需要运行之前编译的解决方法,生成库文件,然后将库文件和要用到的头文件导入自己的项目。
那么这里问题就来了,我就是在这里卡了,每次把生成的库导入到自己的项目后,各种error,无法识别的外部符号,XX在XX里面被引用之类的,然后在网上查了几天都没什么头绪,最后偶然看一篇帖子才发现原因,毫无疑问地暴露了基础较差。。。静态库使用的时候注意运行库版本要一致。
即现在你自己的项目的运行库版本要和需要被导入的lib文件版本要一致。自己项目的运行库版本在项目属性-> 配置属性 -> C/C++ -> 代码生成 -> 运行库 查看,如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/e70ee07c3f7fa8f3692305b42dab74a6)
我这里是多线程DLL/MDd,而我之前出错原因是每次都是在修改自己当前项目的运行库,虽然和要导入的lib文件版本一致了,但是会导致MSVCRTD.lib和qtmaind.lib等头文件又出现error,所以这里应该修改的是breakpad源码中生成lib文件的项目的运行库,使要导入的lib文件运行库版本和你当前的项目运行库版本一致。下图是源码demo中各个项目所对应的生成的lib文件,我们用到的就是这几个。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/7028d96d7af970f07a6486139afe3958)
所以需要修改项目中运行库版本的属性的就是上面对应的用来生成lib文件的项目,如何修改,以crash_generation_server为例,参照下图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201608/63651b82948655bb73d49fa9799ec128)
把每个项目的运行库版本修改以后,可以挨个生成(注意这里生成就是单纯的生成lib文件,它们的运行结果就是生成lib文件,不是生成可执行文件exe的),如果直接解决方案右键生成解决方案或者直接点windos本地调试也行,但是如果报错了,不要以为是生成lib文件没有成功,那是因为,整个解决方案里面除了生成lib文件的项目,还有一个是google官方的样例项目crash_generation_app,他就是生成exe的,而不是生成lib文件,而在你改动之前,它和其他项目的运行库版本都是多线程调试(/MTd),改动以后,这个样例引用了新生成的lib文件,自然会因为运行库版本不匹配而报错,只需要去查看对应的lib文件时间是不是现在的时间,就可以判断是不是新生成的了,然后就可以拿过去用了。
慢慢更新。。。。
开发工具 :
VS2013 +QT 5.3.1
源文件,以及需要搭建的环境文件 :
链接:http://pan.baidu.com/s/1cvDnae 密码:r1mn
其中项目文件.rar是我写的源码,googleBreakpad.rar是官方的示例,Python_X64_2.7.11_AnXia.zip是python的安装文件
首先对官方的的实例googleBreakpad进行编译(此处参考了http://blog.csdn.net/xiexievv/article/details/44673345的编译方法)
安装python 2.x.x就行
跳转到你下载文件的这个目录下“googleBreakpad\src\tools\gyp”
在gyp目录下打开控制台 (可以用在这个文件夹的文件路径中输入cmd或者在cmd下cd 到具体的路径,这个应该没什么障碍)输入命令:
gyp.bat "../../client/windows/breakpad_client.gyp"
如果报错,试试下面这个命令
gyp.bat --no-circular-check "../../client/windows/breakpad_client.gyp"(注:我就是使用这条命令成功的)
这个时候,编译成功了,就会在你的\googleBreakpad\src\client\windows目录下生成一个.sln的解决方案文件,用VS打开,即可。
进入生成的解决方案后,生成所需要的lib库文件
这里有几个特别要注意的地方,我就是在这几各地方困扰了很久
如果需要把breakpad部署到自己的项目中,有两种方法。
①很直接也很蠢的方法,因为这毕竟是个开源项目,所以是直接提供源码的,你可以将你需要的头文件和源文件直接复制到你自己的工程目录下(我这里是直接将src文件夹复制到自己的项目文件目录下,因为后面要用的那些头文件里面会引用其它的头文件,就是以这个文件夹目录为基础目录的),然后按照需要在项目属性-> 配置属性 -> C/C++ -> 常规 ->附加包含目录 添加包含这些头文件和源文件的目标文件夹路径,如图所示:
②不直接使用源文件,而是使用官方源码所生成的库文件(lib文件),推荐使用这种方法,这里就是需要运行之前编译的解决方法,生成库文件,然后将库文件和要用到的头文件导入自己的项目。
那么这里问题就来了,我就是在这里卡了,每次把生成的库导入到自己的项目后,各种error,无法识别的外部符号,XX在XX里面被引用之类的,然后在网上查了几天都没什么头绪,最后偶然看一篇帖子才发现原因,毫无疑问地暴露了基础较差。。。静态库使用的时候注意运行库版本要一致。
即现在你自己的项目的运行库版本要和需要被导入的lib文件版本要一致。自己项目的运行库版本在项目属性-> 配置属性 -> C/C++ -> 代码生成 -> 运行库 查看,如图:
我这里是多线程DLL/MDd,而我之前出错原因是每次都是在修改自己当前项目的运行库,虽然和要导入的lib文件版本一致了,但是会导致MSVCRTD.lib和qtmaind.lib等头文件又出现error,所以这里应该修改的是breakpad源码中生成lib文件的项目的运行库,使要导入的lib文件运行库版本和你当前的项目运行库版本一致。下图是源码demo中各个项目所对应的生成的lib文件,我们用到的就是这几个。
所以需要修改项目中运行库版本的属性的就是上面对应的用来生成lib文件的项目,如何修改,以crash_generation_server为例,参照下图:
把每个项目的运行库版本修改以后,可以挨个生成(注意这里生成就是单纯的生成lib文件,它们的运行结果就是生成lib文件,不是生成可执行文件exe的),如果直接解决方案右键生成解决方案或者直接点windos本地调试也行,但是如果报错了,不要以为是生成lib文件没有成功,那是因为,整个解决方案里面除了生成lib文件的项目,还有一个是google官方的样例项目crash_generation_app,他就是生成exe的,而不是生成lib文件,而在你改动之前,它和其他项目的运行库版本都是多线程调试(/MTd),改动以后,这个样例引用了新生成的lib文件,自然会因为运行库版本不匹配而报错,只需要去查看对应的lib文件时间是不是现在的时间,就可以判断是不是新生成的了,然后就可以拿过去用了。
慢慢更新。。。。
相关文章推荐
- window平台下VS2013结合Qt的google breakpad异常捕捉
- VS2013在Window下显示问题(解决MFC.exe桌面图标显示异常问题)
- Qt中使用Google Breakpad捕获程序崩溃异常
- VS2013 平台下搭建 QT5.3 开发环境
- QT5.8.0 vs2013平台更改程序运行icon图标
- VTK6.3和QT5.5在VS2013,VS2010不同平台搭建的心得
- VS2013建立Qt工程时,Release模式下异常
- 【菜鸟学Qt 1】QT5.3.2新版本+VS2013平台搭建
- Google Breakpad 用VS编译windows和android平台的库文件
- Google Breakpad 之三,实战Windows平台crash
- vs2013解决方案窗口平台工具集显示有问题。
- VS2013+WDK8.1编写window驱动
- Window平台使用VS2010简单快速搭建QT开发环境
- 一、在WIN7 64位系统平台,VS2013环境下安装WTL90_4090_RC1(2014-04-01)
- Google Breakpad之七,android平台简明用法
- Qt 编程学习之hello world 篇 [windows] 【window 平台】
- VS2013编译Qt5.2.1 32位静态库debug-and-release版及结果分享
- 在window平台搭建Qt开发环境(使用VS2008 IDE)
- Qt5+VS 2013 Mediaplayer 音乐播放器 代码
- Google Breakpad之七,android平台简明用法