// Win32Project1.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>
#include <tchar.h>
#include "F:\git\vcpkg\installed\x64-windows\include/client/windows/handler/exception_handler.h"
// #include "F:\git\vcpkg\installed\x64-windows\include/client/windows/crash_generation/client_info.h"
// #include "F:\git\vcpkg\installed\x64-windows\include/client/windows/crash_generation/crash_generation_server.h"
// #include "F:\git\vcpkg\installed\x64-windows\include/client/windows/common/ipc_protocol.h"
//库
#pragma comment(lib, "F:\\git\\vcpkg\\installed\\x64-windows\\lib\\libbreakpad.lib")
#pragma comment(lib, "F:\\git\\vcpkg\\installed\\x64-windows\\lib\\libbreakpad_client.lib")
#pragma comment(lib, "F:\\git\\vcpkg\\installed\\x64-windows\\lib\\libdisasm.lib")
//#pragma comment(lib, "crash_generation_server.lib")
//定义静态的对象
using namespace google_breakpad;
static ExceptionHandler* handler = NULL;
bool ShowDumpResults(const wchar_t* dump_path,
const wchar_t* minidump_id,
void* context,
EXCEPTION_POINTERS* exinfo,
MDRawAssertionInfo* assertion,
bool succeeded)
{
//MessageBox(NULL, _T("aa"), _T("bb"), 0);
TCHAR* text = new TCHAR[1024];
text[0] = _T('\0');
int result = swprintf_s(text,
1024,
TEXT("Dump generation request %s\r\n"),
succeeded ? TEXT("succeeded") : TEXT("failed"));
if (result == -1) {
delete[] text;
}
return succeeded;
}
int main()
{
wstring wszDumpSavePath = L"F:\\"; //保存dump文件的路径,可以动态获取自身的路径
handler = new ExceptionHandler(wszDumpSavePath.c_str(),
NULL,
ShowDumpResults,
NULL,
ExceptionHandler::HANDLER_ALL);
int *p = new int;
delete p;
*p = 3;
return 0;
}