blob: b6c8797c0f2d42322df6172d4b88b7434375b005 [file] [log] [blame]
Getting Started with Breakpad
=============================
Run the sample executable crash_generation_app.exe click Menu->Server->Start.
This is now the 'Server'.
Run the executable AGAIN (a second instance). This is now the 'Client'. You
should see a message like "Client connected" in the Server. In the Client,
click Menu->Client->Deref Zero
The client should crash, and you should see a message like "Client requested
dump" in the server.
In c:\dumps you now have a .dmp file. You can inspect that with
minidump_stackwalk or open in it WinDbg.
Integrating BreakPad into your application
==========================================
See https://code.google.com/p/google-breakpad/wiki/WindowsClientIntegration
In your main() function (or equivalent), before your program does any real work,
add the following:
#include <google_breakpad/client/windows/handler/exception_handler.h>
int main() {
...
static wstring prod = get_myapp_name();
static wstring ver = get_myapp_version();
static wstring subver = get_myapp_subversion();
static int google_custom_count = 3;
static google_breakpad::CustomInfoEntry google_custom_entries[] = {
google_breakpad::CustomInfoEntry(L"prod", prod.c_str()),
google_breakpad::CustomInfoEntry(L"ver", ver.c_str()),
google_breakpad::CustomInfoEntry(L"subver", subver.c_str()),
};
google_breakpad::CustomClientInfo custom_info = {google_custom_entries,
google_custom_count};
google_breakpad::ExceptionHandler * google_pad = new
google_breakpad::ExceptionHandler(
L"C:\\dumps\\", // dump path
NULL, // filter callback
NULL, // MinidumpCallback,
NULL, // callback context
google_breakpad::ExceptionHandler::HANDLER_ALL, // handler types
MiniDumpNormal, // or for a larger dump: MiniDumpWithFullMemory
NULL, // pipe name
&custom_info); // custom info
...
}
If you define MinidumpCallback, the signature is like so: bool
MinidumpCallback(const wchar_t* dump_path, const wchar_t* minidump_id, void*
context, EXCEPTION_POINTERS* exinfo, MDRawAssertionInfo* assertion, bool
succeeded);
The callback is the point where you could spawn another program that tells the
user that the program has crashed etc.
The above code will generate dumps in the c:\dumps folder. MAKE SURE the folder
is created first.