Win10+VS2015 下载、编译和使用google breakpad

来源:互联网 发布:java socket 多次发送 编辑:程序博客网 时间:2024/06/04 23:20

一、下载准备

1.1 下载breakpad
breakpad源码官方网址:https://chromium.googlesource.com/breakpad/breakpad
官方下载方法,git命令:

git clone https://chromium.googlesource.com/breakpad/breakpad

但如果下载出错,如:

Cloning into ‘breakpad’…
fatal: unable to access ‘https://chromium.googlesource.com/breakpad/breakpad/‘: Failed to connect to chromium.googlesource.com port 443: Timed out

可尝试用git命令:

git clone https://chromium.googlesource.com/breakpad/breakpad.git

或者

git clone http://chromium.googlesource.com/breakpad/breakpad.git

1.2 下载gyp
git命令:

git clone https://chromium.googlesource.com/external/gyp

1.3 下载googletest
git命令:

git clone https://github.com/google/googletest.git

1.4 安装python2.7
用gyp打包breakpad时需要python支持,python在官网下载安装并添加到环境变量中,比较简单,自行百度。不过不能安装python3,据说会出错,没亲自试过。

二、编译

1)gyp文件夹复制到breakpad\src\tools\文件夹下
2)breakpad\src\目录下,新建文件夹并命名为testing。
3)将googletest文件夹下的googletest和googlemock文件夹复制到breakpad\src\testing\文件夹下。
4)用gyp构建出工程文件。打开cmd命令窗口,cd进入到breakpad\src\tools\gyp目录,执行命令:

gyp.bat --no-circular-check ..\..\client\windows\breakpad_client.gyp

如果想用vs2005编译,则执行上面命令前,需要先对版本进行设置:

set GYP_MSVS_VERSION=2005

5)Visual Studio 2015打开breakpad\src\client\windows\目录下的breakpad_client.sln工程。
右键build_all项目,点击生成。成功后在breakpad\src\client\windows\Debug\lib文件夹下会有各lib库生成。
这里写图片描述
我用的是Win10和VS2015社区版,这个编译过程没有出现过任务错误,比较顺利。如果有错误,可参考http://blog.csdn.net/bingzhongdehuoyan/article/details/53860433解决。

测试

1)新建一个工程testcrash,新建main.cpp:

#include <cstdio>#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) {        printf("dump guid is %ws\n", id);    }    else {        printf("dump failed\n");    }    system("pause");    return succeeded;}int mydiv(int x, int y){    int z;    z = x / y;    return z;}int main(){    google_breakpad::ExceptionHandler eh(        L".", NULL, callback, NULL,        google_breakpad::ExceptionHandler::HANDLER_ALL);    printf("9/3=%d\n", mydiv(9, 3));    printf("9/0=%d\n", mydiv(9, 0));  //程序将在此崩溃    printf("8/2=%d\n", mydiv(8, 2));    system("pause");    return 0;}

2)然后右键wincrash->属性->VC++目录->包含目录->编辑:加入 你的路径\breakpad\src\
3)右键wincrash->属性->链接器->输入->附加依赖项->编辑:加入lib库

你的路径\lib\common.lib你的路径\lib\crash_generation_client.lib你的路径\lib\crash_generation_server.lib你的路径\lib\exception_handler.lib

4)右键wincrash->属性->C/C++->代码生成->运行库->多线程调试 (/MTd)
5)编译程序,运行。
这里写图片描述
6)在main.cpp文件所在文件夹里生成.dump文件。用VS2015打开。点击使用 仅限本机 进行调试,可以看到错误详情及错误具体发生在哪行代码。
这里写图片描述

这里写图片描述

参考文献:

http://blog.csdn.net/bingzhongdehuoyan/article/details/53860433

原创粉丝点击