#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 () |
|
void | PushSymbolDetail () |
|
void | PopSymbolDetail () |
|
void | PrintSymbolDetail () |
|
|
static BOOL | _GetWindowsVersionFromWMI (TCHAR *szVersion, DWORD cntMax) |
|
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 326 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 |
|
) |
| |
|
staticprivate |
◆ 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()
void WheatyExceptionReport::PushSymbolDetail |
( |
| ) |
|
|
private |
◆ StoreSymbol()
bool WheatyExceptionReport::StoreSymbol |
( |
DWORD |
type, |
|
|
DWORD_PTR |
offset |
|
) |
| |
|
private |
◆ UnhandledExceptionFilterImpl()
LONG WheatyExceptionReport::UnhandledExceptionFilterImpl |
( |
PEXCEPTION_POINTERS |
pExceptionInfo | ) |
|
◆ 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
std::mutex WheatyExceptionReport::m_alreadyCrashedLock |
|
private |
◆ m_dumpFile
HANDLE WheatyExceptionReport::m_dumpFile |
|
private |
◆ m_dumpFileName
TCHAR WheatyExceptionReport::m_dumpFileName[MAX_PATH] |
|
private |
◆ m_logFileName
TCHAR WheatyExceptionReport::m_logFileName[MAX_PATH] |
|
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
◆ RtlGetVersion
The documentation for this class was generated from the following files: