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

一、下载准备

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值