From: Vadim Zeitlin Date: Mon, 17 Jan 2005 02:04:06 +0000 (+0000) Subject: added GenerateNow() X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/47e94dedd98826720437695345e96a7c2a94a5d4 added GenerateNow() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31422 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/msw/crashrpt.h b/include/wx/msw/crashrpt.h index 8f602e9b2d..6e7b725512 100644 --- a/include/wx/msw/crashrpt.h +++ b/include/wx/msw/crashrpt.h @@ -48,7 +48,10 @@ enum // // this creates a much larger mini dump than just wxCRASH_REPORT_STACK but // still much smaller than wxCRASH_REPORT_LOCALS one - wxCRASH_REPORT_GLOBALS = 4 + wxCRASH_REPORT_GLOBALS = 4, + + // default is to create the smallest possible crash report + wxCRASH_REPORT_DEFAULT = wxCRASH_REPORT_LOCATION | wxCRASH_REPORT_STACK }; // ---------------------------------------------------------------------------- @@ -101,10 +104,14 @@ struct WXDLLIMPEXP_BASE wxCrashReport // // if ep pointer is NULL, the global exception info which is valid only // inside wxApp::OnFatalException() is used - static bool Generate(int flags = wxCRASH_REPORT_LOCATION | - wxCRASH_REPORT_STACK, + static bool Generate(int flags = wxCRASH_REPORT_DEFAULT, _EXCEPTION_POINTERS *ep = NULL); + + // generate a crash report from outside of wxApp::OnFatalException(), this + // can be used to take "snapshots" of the program in wxApp::OnAssert() for + // example + static bool GenerateNow(int flags = wxCRASH_REPORT_DEFAULT); }; #endif // wxUSE_CRASHREPORT diff --git a/src/msw/crashrpt.cpp b/src/msw/crashrpt.cpp index 9edcd4524d..7662ab0779 100644 --- a/src/msw/crashrpt.cpp +++ b/src/msw/crashrpt.cpp @@ -255,6 +255,24 @@ bool wxCrashReport::Generate(int flags, EXCEPTION_POINTERS *ep) return impl.Generate(flags, ep); } +/* static */ +bool wxCrashReport::GenerateNow(int flags) +{ + bool rc = false; + + __try + { + RaiseException(0x1976, 0, 0, NULL); + } + __except( rc = Generate(flags, (EXCEPTION_POINTERS *)GetExceptionInformation()), + EXCEPTION_CONTINUE_EXECUTION ) + { + // never executed because of EXCEPTION_CONTINUE_EXECUTION above + } + + return rc; +} + // ---------------------------------------------------------------------------- // wxCrashContext // ----------------------------------------------------------------------------