Go to the documentation of this file.
94 #endif // _MSC_VER < 1300
137 DWORD dwProcessId = GetCurrentProcessId(),
138 HANDLE hProcess = GetCurrentProcess());
147 LPDWORD lpNumberOfBytesRead,
154 const CONTEXT* context = NULL,
156 LPVOID pUserData = NULL
196 static BOOL __stdcall
myReadProcMem(HANDLE hProcess,
DWORD64 qwBaseAddress, PVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead);
215 #ifdef CURRENT_THREAD_VIA_EXCEPTION
218 #define GET_CURRENT_CONTEXT(c, contextFlags) \
220 memset(&c, 0, sizeof(CONTEXT)); \
221 EXCEPTION_POINTERS *pExp = NULL; \
224 } __except( ( (pExp = GetExceptionInformation()) ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_EXECUTE_HANDLER)) {} \
226 memcpy(&c, pExp->ContextRecord, sizeof(CONTEXT)); \
227 c.ContextFlags = contextFlags; \
231 #define GET_CURRENT_CONTEXT(c, contextFlags) \
233 memset(&c, 0, sizeof(CONTEXT)); \
234 c.ContextFlags = contextFlags; \
237 __asm mov c.Eip, eax \
238 __asm mov c.Ebp, ebp \
239 __asm mov c.Esp, esp \
246 #define GET_CURRENT_CONTEXT(c, contextFlags) \
248 memset(&c, 0, sizeof(CONTEXT)); \
249 c.ContextFlags = contextFlags; \
250 RtlCaptureContext(&c); \
virtual void OnDbgHelpErr(LPCSTR szFuncName, DWORD gle, DWORD64 addr)
static BOOL __stdcall myReadProcMem(HANDLE hProcess, DWORD64 qwBaseAddress, PVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead)
virtual void OnCallstackEntry(CallstackEntryType eType, CallstackEntry &entry)
StackWalkerInternal * m_sw
virtual void OnOutput(LPCSTR szText)
CHAR undFullName[STACKWALK_MAX_NAMELEN]
CHAR loadedImageName[STACKWALK_MAX_NAMELEN]
virtual void OnLoadModule(LPCSTR img, LPCSTR mod, DWORD64 baseAddr, DWORD size, DWORD result, LPCSTR symType, LPCSTR pdbName, ULONGLONG fileVersion)
CHAR moduleName[STACKWALK_MAX_NAMELEN]
friend StackWalkerInternal
unsigned __int64 * PDWORD64
virtual void OnSymInit(LPCSTR szSearchPath, DWORD symOptions, LPCSTR szUserName)
CHAR lineFileName[STACKWALK_MAX_NAMELEN]
Container for each Callstack-Entry.
BOOL(__stdcall * PReadProcessMemoryRoutine)(HANDLE hProcess, DWORD64 qwBaseAddress, PVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead, LPVOID pUserData)
StackWalker & operator=(StackWalker const &)=delete
CHAR undName[STACKWALK_MAX_NAMELEN]
A class that can help with walking the stack for debugging purposes (Windows version)
CHAR name[STACKWALK_MAX_NAMELEN]
const typedef std::string & LPCSTR