|
@@ -9,6 +9,7 @@
|
|
*/
|
|
*/
|
|
#include "StdInc.h"
|
|
#include "StdInc.h"
|
|
#include "CConsoleHandler.h"
|
|
#include "CConsoleHandler.h"
|
|
|
|
+#include "CConfigHandler.h"
|
|
|
|
|
|
#include "CThreadHelper.h"
|
|
#include "CThreadHelper.h"
|
|
|
|
|
|
@@ -135,7 +136,27 @@ LONG WINAPI onUnhandledException(EXCEPTION_POINTERS* exception)
|
|
strcat(mname, "_crashinfo.dmp");
|
|
strcat(mname, "_crashinfo.dmp");
|
|
HANDLE dfile = CreateFileA(mname, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0);
|
|
HANDLE dfile = CreateFileA(mname, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0);
|
|
logGlobal->error("Crash info will be put in %s", mname);
|
|
logGlobal->error("Crash info will be put in %s", mname);
|
|
- MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), dfile, MiniDumpWithDataSegs, &meinfo, 0, 0);
|
|
|
|
|
|
+
|
|
|
|
+ // flush loggers
|
|
|
|
+ std::string padding(1000, '@');
|
|
|
|
+
|
|
|
|
+ logGlobal->error(padding);
|
|
|
|
+ logAi->error(padding);
|
|
|
|
+ logNetwork->error(padding);
|
|
|
|
+
|
|
|
|
+ auto dumpType = MiniDumpWithDataSegs;
|
|
|
|
+
|
|
|
|
+ if(settings["general"]["extraDump"].Bool())
|
|
|
|
+ {
|
|
|
|
+ dumpType = (MINIDUMP_TYPE)(
|
|
|
|
+ MiniDumpWithFullMemory
|
|
|
|
+ | MiniDumpWithFullMemoryInfo
|
|
|
|
+ | MiniDumpWithHandleData
|
|
|
|
+ | MiniDumpWithUnloadedModules
|
|
|
|
+ | MiniDumpWithThreadInfo);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), dfile, dumpType, &meinfo, 0, 0);
|
|
MessageBoxA(0, "VCMI has crashed. We are sorry. File with information about encountered problem has been created.", "VCMI Crashhandler", MB_OK | MB_ICONERROR);
|
|
MessageBoxA(0, "VCMI has crashed. We are sorry. File with information about encountered problem has been created.", "VCMI Crashhandler", MB_OK | MB_ICONERROR);
|
|
return EXCEPTION_EXECUTE_HANDLER;
|
|
return EXCEPTION_EXECUTE_HANDLER;
|
|
}
|
|
}
|