#include <WheatyExceptionReport.h>
|
| static LONG WINAPI | WheatyUnhandledExceptionFilter (PEXCEPTION_POINTERS pExceptionInfo) |
| |
| static void __cdecl | WheatyCrtHandler (wchar_t const *expression, wchar_t const *function, wchar_t const *file, unsigned int line, uintptr_t pReserved) |
| |
|
| typedef NTSTATUS(NTAPI * | pRtlGetVersion) (PRTL_OSVERSIONINFOW lpVersionInformation) |
| |
|
| void | GenerateExceptionReport (PEXCEPTION_POINTERS pExceptionInfo) |
| |
| void | PrintSystemInfo () |
| |
| BOOL | _GetWindowsVersion (TCHAR *szVersion, DWORD cntMax) |
| |
| void | WriteStackDetails (PCONTEXT pContext, bool bWriteVariables, HANDLE pThreadHandle) |
| |
| bool | FormatSymbolValue (PSYMBOL_INFO, EnumerateSymbolsCallbackContext *) |
| |
| void | DumpTypeIndex (DWORD64, DWORD, DWORD_PTR, bool &, char const *, char const *, bool, bool) |
| |
| BasicType | GetBasicType (DWORD typeIndex, DWORD64 modBase) const |
| |
| int | Log (const TCHAR *format,...) |
| |
| bool | StoreSymbol (DWORD type, DWORD_PTR offset) |
| |
| void | ClearSymbols () |
| |
| SymbolDetail & | PushSymbolDetail () |
| |
| void | PopSymbolDetail () |
| |
| void | PrintSymbolDetail () |
| |
|
| static BOOL | _GetWindowsVersionFromWMI (TCHAR *szVersion, DWORD cntMax) noexcept |
| |
| static BOOL | _GetProcessorName (TCHAR *sProcessorName, DWORD maxcount) |
| |
| static LPCTSTR | GetExceptionString (DWORD dwCode) |
| |
| static BOOL | GetLogicalAddress (PVOID addr, PTSTR szModule, DWORD len, DWORD §ion, DWORD_PTR &offset) |
| |
| static BOOL | GetSymbolFromAddress (HANDLE hProcess, DWORD64 Address, ULONG InlineContext, PDWORD64 Displacement, PSYMBOL_INFO Symbol) |
| |
| static BOOL | GetSymbolLineFromAddress (HANDLE hProcess, DWORD64 qwAddr, ULONG InlineContext, PDWORD pdwDisplacement, PIMAGEHLP_LINE64 Line64) |
| |
| static BOOL CALLBACK | EnumerateSymbolsCallback (PSYMBOL_INFO, ULONG, PVOID) |
| |
| static void | FormatOutputValue (char *pszCurrBuffer, BasicType basicType, DWORD64 length, PVOID pAddress, size_t bufferSize, size_t countOverride=0) |
| |
| static DWORD_PTR | DereferenceUnsafePointer (DWORD_PTR address) |
| |
| static Optional< DWORD_PTR > | GetIntegerRegisterValue (PCONTEXT context, ULONG registerId) |
| |
Definition at line 324 of file WheatyExceptionReport.h.
◆ pRtlGetVersion
| typedef NTSTATUS(NTAPI * WheatyExceptionReport::pRtlGetVersion) (PRTL_OSVERSIONINFOW lpVersionInformation) |
|
private |
◆ WheatyExceptionReport() [1/3]
| WheatyExceptionReport::WheatyExceptionReport |
( |
| ) |
|
◆ WheatyExceptionReport() [2/3]
◆ WheatyExceptionReport() [3/3]
◆ ~WheatyExceptionReport()
| WheatyExceptionReport::~WheatyExceptionReport |
( |
| ) |
|
◆ _GetProcessorName()
| BOOL WheatyExceptionReport::_GetProcessorName |
( |
TCHAR * |
sProcessorName, |
|
|
DWORD |
maxcount |
|
) |
| |
|
staticprivate |
◆ _GetWindowsVersion()
| BOOL WheatyExceptionReport::_GetWindowsVersion |
( |
TCHAR * |
szVersion, |
|
|
DWORD |
cntMax |
|
) |
| |
|
private |
◆ _GetWindowsVersionFromWMI()
| BOOL WheatyExceptionReport::_GetWindowsVersionFromWMI |
( |
TCHAR * |
szVersion, |
|
|
DWORD |
cntMax |
|
) |
| |
|
staticprivatenoexcept |
◆ ClearSymbols()
| void WheatyExceptionReport::ClearSymbols |
( |
| ) |
|
|
private |
◆ DereferenceUnsafePointer()
| DWORD_PTR WheatyExceptionReport::DereferenceUnsafePointer |
( |
DWORD_PTR |
address | ) |
|
|
staticprivate |
◆ DumpTypeIndex()
| void WheatyExceptionReport::DumpTypeIndex |
( |
DWORD64 |
modBase, |
|
|
DWORD |
dwTypeIndex, |
|
|
DWORD_PTR |
offset, |
|
|
bool & |
bHandled, |
|
|
char const * |
Name, |
|
|
char const * |
, |
|
|
bool |
newSymbol, |
|
|
bool |
logChildren |
|
) |
| |
|
private |
◆ EnumerateSymbolsCallback()
| BOOL CALLBACK WheatyExceptionReport::EnumerateSymbolsCallback |
( |
PSYMBOL_INFO |
pSymInfo, |
|
|
ULONG |
, |
|
|
PVOID |
UserContext |
|
) |
| |
|
staticprivate |
◆ FormatOutputValue()
| void WheatyExceptionReport::FormatOutputValue |
( |
char * |
pszCurrBuffer, |
|
|
BasicType |
basicType, |
|
|
DWORD64 |
length, |
|
|
PVOID |
pAddress, |
|
|
size_t |
bufferSize, |
|
|
size_t |
countOverride = 0 |
|
) |
| |
|
staticprivate |
◆ FormatSymbolValue()
◆ GenerateExceptionReport()
| void WheatyExceptionReport::GenerateExceptionReport |
( |
PEXCEPTION_POINTERS |
pExceptionInfo | ) |
|
|
private |
◆ GetBasicType()
| BasicType WheatyExceptionReport::GetBasicType |
( |
DWORD |
typeIndex, |
|
|
DWORD64 |
modBase |
|
) |
| const |
|
private |
◆ GetExceptionString()
| LPCTSTR WheatyExceptionReport::GetExceptionString |
( |
DWORD |
dwCode | ) |
|
|
staticprivate |
◆ GetIntegerRegisterValue()
| Optional< DWORD_PTR > WheatyExceptionReport::GetIntegerRegisterValue |
( |
PCONTEXT |
context, |
|
|
ULONG |
registerId |
|
) |
| |
|
staticprivate |
◆ GetLogicalAddress()
| BOOL WheatyExceptionReport::GetLogicalAddress |
( |
PVOID |
addr, |
|
|
PTSTR |
szModule, |
|
|
DWORD |
len, |
|
|
DWORD & |
section, |
|
|
DWORD_PTR & |
offset |
|
) |
| |
|
staticprivate |
◆ GetSymbolFromAddress()
| BOOL WheatyExceptionReport::GetSymbolFromAddress |
( |
HANDLE |
hProcess, |
|
|
DWORD64 |
Address, |
|
|
ULONG |
InlineContext, |
|
|
PDWORD64 |
Displacement, |
|
|
PSYMBOL_INFO |
Symbol |
|
) |
| |
|
staticprivate |
◆ GetSymbolLineFromAddress()
| BOOL WheatyExceptionReport::GetSymbolLineFromAddress |
( |
HANDLE |
hProcess, |
|
|
DWORD64 |
qwAddr, |
|
|
ULONG |
InlineContext, |
|
|
PDWORD |
pdwDisplacement, |
|
|
PIMAGEHLP_LINE64 |
Line64 |
|
) |
| |
|
staticprivate |
◆ Log()
| int WheatyExceptionReport::Log |
( |
const TCHAR * |
format, |
|
|
|
... |
|
) |
| |
|
private |
◆ operator=() [1/2]
◆ operator=() [2/2]
◆ PopSymbolDetail()
| void WheatyExceptionReport::PopSymbolDetail |
( |
| ) |
|
|
private |
◆ PrintSymbolDetail()
| void WheatyExceptionReport::PrintSymbolDetail |
( |
| ) |
|
|
private |
◆ PrintSystemInfo()
| void WheatyExceptionReport::PrintSystemInfo |
( |
| ) |
|
|
private |
◆ printTracesForAllThreads()
| void WheatyExceptionReport::printTracesForAllThreads |
( |
bool |
bWriteVariables | ) |
|
◆ PushSymbolDetail()
◆ StoreSymbol()
| bool WheatyExceptionReport::StoreSymbol |
( |
DWORD |
type, |
|
|
DWORD_PTR |
offset |
|
) |
| |
|
private |
◆ UnhandledExceptionFilterImpl()
| LONG WheatyExceptionReport::UnhandledExceptionFilterImpl |
( |
PEXCEPTION_POINTERS |
pExceptionInfo | ) |
|
|
noexcept |
◆ WheatyCrtHandler()
| void __cdecl WheatyExceptionReport::WheatyCrtHandler |
( |
wchar_t const * |
expression, |
|
|
wchar_t const * |
function, |
|
|
wchar_t const * |
file, |
|
|
unsigned int |
line, |
|
|
uintptr_t |
pReserved |
|
) |
| |
|
static |
◆ WheatyUnhandledExceptionFilter()
| LONG WINAPI WheatyExceptionReport::WheatyUnhandledExceptionFilter |
( |
PEXCEPTION_POINTERS |
pExceptionInfo | ) |
|
|
static |
◆ WriteStackDetails()
| void WheatyExceptionReport::WriteStackDetails |
( |
PCONTEXT |
pContext, |
|
|
bool |
bWriteVariables, |
|
|
HANDLE |
pThreadHandle |
|
) |
| |
|
private |
◆ m_alreadyCrashed
| bool WheatyExceptionReport::m_alreadyCrashed |
|
private |
◆ m_alreadyCrashedLock
| SRWLOCK WheatyExceptionReport::m_alreadyCrashedLock |
|
private |
◆ m_dumpFile
| HANDLE WheatyExceptionReport::m_dumpFile |
|
private |
◆ m_previousCrtHandler
| _invalid_parameter_handler WheatyExceptionReport::m_previousCrtHandler |
|
private |
◆ m_previousFilter
| LPTOP_LEVEL_EXCEPTION_FILTER WheatyExceptionReport::m_previousFilter |
|
private |
◆ m_process
| HANDLE WheatyExceptionReport::m_process |
|
private |
◆ m_reportFile
| FILE* WheatyExceptionReport::m_reportFile |
|
private |
◆ m_symbolDetails
| std::stack<SymbolDetail> WheatyExceptionReport::m_symbolDetails |
|
private |
◆ m_symbols
◆ m_tempPathBuffer
| TCHAR* WheatyExceptionReport::m_tempPathBuffer |
|
private |
◆ m_tempPathBufferChars
| constexpr SIZE_T WheatyExceptionReport::m_tempPathBufferChars = 0x8000 |
|
staticconstexprprivate |
◆ RtlGetVersion
The documentation for this class was generated from the following files: