mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/CrashHandler: Include assertion messages in crash reports
(cherry picked from commit 62db1fb683)
This commit is contained in:
@@ -22,6 +22,7 @@
|
||||
#include "WheatyExceptionReport.h"
|
||||
|
||||
#include "Common.h"
|
||||
#include "Errors.h"
|
||||
#include "GitRevision.h"
|
||||
#include <algorithm>
|
||||
|
||||
@@ -171,8 +172,21 @@ PEXCEPTION_POINTERS pExceptionInfo)
|
||||
info.ExceptionPointers = pExceptionInfo;
|
||||
info.ThreadId = GetCurrentThreadId();
|
||||
|
||||
MINIDUMP_USER_STREAM additionalStream = {};
|
||||
MINIDUMP_USER_STREAM_INFORMATION additionalStreamInfo = {};
|
||||
|
||||
if (pExceptionInfo->ExceptionRecord->ExceptionCode == EXCEPTION_ASSERTION_FAILURE && pExceptionInfo->ExceptionRecord->NumberParameters > 0)
|
||||
{
|
||||
additionalStream.Type = CommentStreamA;
|
||||
additionalStream.Buffer = reinterpret_cast<PVOID>(pExceptionInfo->ExceptionRecord->ExceptionInformation[0]);
|
||||
additionalStream.BufferSize = strlen(reinterpret_cast<char const*>(pExceptionInfo->ExceptionRecord->ExceptionInformation[0])) + 1;
|
||||
|
||||
additionalStreamInfo.UserStreamArray = &additionalStream;
|
||||
additionalStreamInfo.UserStreamCount = 1;
|
||||
}
|
||||
|
||||
MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(),
|
||||
m_hDumpFile, MiniDumpWithIndirectlyReferencedMemory, &info, nullptr, nullptr);
|
||||
m_hDumpFile, MiniDumpWithIndirectlyReferencedMemory, &info, &additionalStreamInfo, nullptr);
|
||||
|
||||
CloseHandle(m_hDumpFile);
|
||||
}
|
||||
@@ -504,6 +518,11 @@ PEXCEPTION_POINTERS pExceptionInfo)
|
||||
Log(_T("Exception code: %08X %s\r\n"),
|
||||
pExceptionRecord->ExceptionCode,
|
||||
GetExceptionString(pExceptionRecord->ExceptionCode));
|
||||
if (pExceptionRecord->ExceptionCode == EXCEPTION_ASSERTION_FAILURE && pExceptionRecord->NumberParameters >= 2)
|
||||
{
|
||||
pExceptionRecord->ExceptionAddress = reinterpret_cast<PVOID>(pExceptionRecord->ExceptionInformation[1]);
|
||||
Log(_T("Assertion message: %s\r\n"), pExceptionRecord->ExceptionInformation[0]);
|
||||
}
|
||||
|
||||
// Now print information about where the fault occured
|
||||
TCHAR szFaultingModule[MAX_PATH];
|
||||
|
||||
Reference in New Issue
Block a user