一、下载准备
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