mirror of
https://github.com/yuzu-mirror/breakpad.git
synced 2026-03-06 21:13:49 +01:00
46 lines
1.3 KiB
C++
46 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;
|
||
|
|
}
|