windows10下使用gyp编译google_breakpad
来源:互联网 发布:环境污染数据表格 编辑:程序博客网 时间:2024/06/16 13:41
看到这个跨平台的开源项目后希望在自己的项目中使用,在网上转了一圈后发现很多文章都不太正确(或失效),特自己记录下整个过程。
最新的google_breakpad中已经不包含gyp的源码,因此需要单独下载gpy源码并安装。而gpy依赖于python 2.x,我使用了最新的python 2.7.14。
安装python 2.7.14
整个最简单,不表。windows默认安装到了c:\Python27下,此时要将如下目录加入windows path变量:
c:\Python27
c:\Python27\Scripts
安装gyp
在github上下载一份gyp源码,我从这里下载 https://github.com/adblockplus/gyp
执行以下代码安装:
setup.py install
编译google_breakpad windows Client
从github上下载google_breakpad。
在breakpad-master\src\client\windows目录下打开cmd窗口,执行如下命令:
gyp --no-circular-check "./breakpad_client.gyp"#不加--no-circular-check的话,gyp会发现此处的项目有循环依赖问题
上述命令执行成功后,会在当前目录生成visualstudio项目文件,安装正常的vs项目完成编译工作即可(我在这里出现了test项目编译错误的情况,但breakpad是可用的)。
特别注意:google_breakpad各子项目的code-generation编译选项默认为MTd/MT,需要修改为MDd/MD(因为后续QT使用VC做编译器时默认使用了MDd/MD选项)。
编译完成之后,运行crash_generation_app吧,这是他的测试程序,dump的默认位置保存在C:\Dumps下,请注意先建立好目录,不然会无法使用。
启动测试程序之后,此时还不能抓取dump,因为这个是breakpad中的服务器端,需要再启动一个测试程序,在第二个测试程序中,我们就可以试验Client菜单中的各种崩溃了。这些崩溃都会被抓住转存到C:Dumps目录下。
QT使用google_breakpad
QT使用google_breakpad windows client时,分为两步:
修改QT的pro文件:
#在加入对google_breakpad的库引用LIBS += -L$$PWD/../_lib/google_breakpad -lexception_handlerLIBS += -L$$PWD/../_lib/google_breakpad -lcrash_generation_clientLIBS += -L$$PWD/../_lib/google_breakpad -lcommon#加入common会容易被人忽略,编译时的报错会提醒你这一点,一定要仔细看出错信息#加入google_breakpad的包含文件INCLUDEPATH += $$PWD/../_lib/google_breakpad/include
参照google给的crash_generation_app范例,在main.cpp中写入如下代码:
#include "client/windows/handler/exception_handler.h"// 程序崩溃回调函数;bool callback(const wchar_t *dump_path, const wchar_t *id, void *context, EXCEPTION_POINTERS *exinfo, MDRawAssertionInfo *assertion, bool succeeded){ if (succeeded) { qDebug() << "Create dump file success"; } else { qDebug() << "Create dump file failed"; } return succeeded;}static size_t kCustomInfoCount = 2;static google_breakpad::CustomInfoEntry kCustomInfoEntries[] = { google_breakpad::CustomInfoEntry(L"prod", L"CrashTestApp"), google_breakpad::CustomInfoEntry(L"ver", L"1.0"),};int main(int argc, char *argv[]){ //创建dump目录 std::wstring dumpDir = L"./dumps";//L"C:\\dumps\\", // 创建捕捉程序异常对象; google_breakpad::CustomClientInfo custom_info = {kCustomInfoEntries, kCustomInfoCount}; const wchar_t kPipeName[] = L"";// L"\\\\.\\pipe\\BreakpadCrashServices\\TestServer"; google_breakpad::ExceptionHandler handler(dumpDir, NULL, callback,//google_breakpad::ShowDumpResults, NULL, google_breakpad::ExceptionHandler::HANDLER_ALL, MiniDumpNormal, kPipeName, NULL);//&custom_info); QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}
使用注意事项
使用breakpad的时候,有两个地方需要注意:
1. 记得把breakpad的solution下的几个工程,包含到你开发的工程中,或者直接包含他们的lib。
common:基础功能,包含一个对GUID的封装和http上传的类。
exception_handler:用来捕获崩溃的类。
crash_generation_server:breakpad的服务端,用来在产生崩溃时抓取dump。
crash_generation_client:breakpad的客户端,用来捕获当前进程的崩溃。
2. 在初始化breakpad之前,记得先创建好dump文件的目录,不然breakpad服务端将不能正常的写dump,这会导致breakpad客户端在崩溃时无限等待服务端dump写完的消息,最后失去响应。
- windows10下使用gyp编译google_breakpad
- Windows下使用node-gyp
- windows10下编译x264
- Mac下使用gyp编译libpomelo静态库,并在cocos2dx项目中引用
- gyp 使用
- Windows10+VS2013环境下Dlib库的编译与使用
- windows10下编译 fast rcnn
- Google Breakpad--VS2015 编译、使用、定位错误(如何使用gyp)
- windows10下编译clang流水帐
- windows10下编译ffmpeg for android
- Windows10 Pro 下 Hadoop2.7.3 编译心得
- Caffe在Windows10下的编译安装
- windows10下的caffe框架的编译
- chrome gn,gyp使用
- GYP使用技巧
- windows10下编译ffmpeg for android----编译成功
- node在windows下node-gyp编译可能会出现的问题
- gyp
- 几种开源许可协议
- Mibilenet-SSD的Caffe系列实现
- 基于selenium爬取图片并转存到百度网盘
- 中缀表达式转后缀表达式(逆波兰)
- xml文件--DOM4J方式解析xml文件
- windows10下使用gyp编译google_breakpad
- 演讲主题更新:12月9号下午深圳Linuxer聚会下午茶交流
- 线段树学习
- 成绩排序
- Salesforce -- 代码控制记录共享
- OpenCV--形态学操作
- 指针编程错误
- view视图解析器解析
- 登录页面(含后台)login.php