mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2025-12-27 17:55:29 +01:00
caller-implemented SymbolSupplier object to get a symbol file. Add a CrashReportProcessor object which provides a simple API for processing a CrashReport struct, given a SymbolSupplier and a minidump file. r=mmentovai (#17)) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@18 4c0a9323-5329-0410-9bdc-e9ce6186880e
45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
// This file is used to generate minidump2.dmp and minidump2.sym.
|
|
// cl /Zi /Fetest_app.exe test_app.cc dbghelp.lib
|
|
// Then run test_app to generate a dump, and dump_syms to create the .sym file.
|
|
|
|
#include <windows.h>
|
|
#include <dbghelp.h>
|
|
|
|
static LONG HandleException(EXCEPTION_POINTERS *exinfo) {
|
|
HANDLE dump_file = CreateFile("dump.dmp",
|
|
GENERIC_WRITE,
|
|
FILE_SHARE_WRITE,
|
|
NULL,
|
|
CREATE_ALWAYS,
|
|
FILE_ATTRIBUTE_NORMAL,
|
|
NULL);
|
|
|
|
MINIDUMP_EXCEPTION_INFORMATION except_info;
|
|
except_info.ThreadId = GetCurrentThreadId();
|
|
except_info.ExceptionPointers = exinfo;
|
|
except_info.ClientPointers = false;
|
|
|
|
MiniDumpWriteDump(GetCurrentProcess(),
|
|
GetCurrentProcessId(),
|
|
dump_file,
|
|
MiniDumpNormal,
|
|
&except_info,
|
|
NULL,
|
|
NULL);
|
|
|
|
CloseHandle(dump_file);
|
|
return EXCEPTION_EXECUTE_HANDLER;
|
|
}
|
|
|
|
void CrashFunction() {
|
|
int *i = NULL;
|
|
*i = 5; // crash!
|
|
}
|
|
|
|
int main(int argc, char *argv[]) {
|
|
__try {
|
|
CrashFunction();
|
|
} __except(HandleException(GetExceptionInformation())) {
|
|
}
|
|
return 0;
|
|
}
|