59 #endif // _MSC_VER < 1300
103 LPCSTR szSymPath = NULL,
104 DWORD dwProcessId = GetCurrentProcessId(),
105 HANDLE hProcess = GetCurrentProcess()
115 LPDWORD lpNumberOfBytesRead,
122 HANDLE hThread = GetCurrentThread(),
123 const CONTEXT *context = NULL,
125 LPVOID pUserData = NULL
159 virtual void OnSymInit(LPCSTR szSearchPath, DWORD symOptions, LPCSTR szUserName);
160 virtual void OnLoadModule(LPCSTR img, LPCSTR mod,
DWORD64 baseAddr, DWORD
size, DWORD result, LPCSTR symType, LPCSTR pdbName, ULONGLONG fileVersion);
163 virtual void OnOutput(LPCSTR szText);
173 static BOOL __stdcall
myReadProcMem(HANDLE hProcess,
DWORD64 qwBaseAddress, PVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead);
194 #ifdef CURRENT_THREAD_VIA_EXCEPTION
197 #define GET_CURRENT_CONTEXT(c, contextFlags) \
199 memset(&c, 0, sizeof(CONTEXT)); \
200 EXCEPTION_POINTERS *pExp = NULL; \
203 } __except( ( (pExp = GetExceptionInformation()) ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_EXECUTE_HANDLER)) {} \
205 memcpy(&c, pExp->ContextRecord, sizeof(CONTEXT)); \
206 c.ContextFlags = contextFlags; \
210 #define GET_CURRENT_CONTEXT(c, contextFlags) \
212 memset(&c, 0, sizeof(CONTEXT)); \
213 c.ContextFlags = contextFlags; \
216 __asm mov c.Eip, eax \
217 __asm mov c.Ebp, ebp \
218 __asm mov c.Esp, esp \
225 #define GET_CURRENT_CONTEXT(c, contextFlags) \
227 memset(&c, 0, sizeof(CONTEXT)); \
228 c.ContextFlags = contextFlags; \
229 RtlCaptureContext(&c); \
virtual void OnLoadModule(LPCSTR img, LPCSTR mod, DWORD64 baseAddr, DWORD size, DWORD result, LPCSTR symType, LPCSTR pdbName, ULONGLONG fileVersion)
Definition: StackWalker.cc:1148
virtual void OnOutput(LPCSTR szText)
Definition: StackWalker.cc:1228
Definition: StackWalker.h:86
BOOL LoadModules()
Definition: StackWalker.cc:778
CallstackEntryType
Definition: StackWalker.h:157
virtual void OnCallstackEntry(CallstackEntryType eType, CallstackEntry &entry)
Definition: StackWalker.cc:1165
virtual void OnDbgHelpErr(LPCSTR szFuncName, DWORD gle, DWORD64 addr)
Definition: StackWalker.cc:1190
Definition: StackWalker.h:157
Definition: StackWalker.h:64
StackWalkOptions
Definition: StackWalker.h:67
Definition: StackWalker.h:83
HANDLE m_hProcess
Definition: StackWalker.h:166
int m_options
Definition: StackWalker.h:171
Definition: StackWalker.h:98
DWORD m_dwProcessId
Definition: StackWalker.h:167
virtual void OnSymInit(LPCSTR szSearchPath, DWORD symOptions, LPCSTR szUserName)
Definition: StackWalker.cc:1197
BOOL m_modulesLoaded
Definition: StackWalker.h:168
DWORD offsetFromLine
Definition: StackWalker.h:147
DWORD symType
Definition: StackWalker.h:150
unsigned long SIZE_T
Definition: StackWalker.h:57
Definition: StackWalker.h:77
CHAR moduleName[STACKWALK_MAX_NAMELEN]
Definition: StackWalker.h:152
CHAR lineFileName[STACKWALK_MAX_NAMELEN]
Definition: StackWalker.h:149
unsigned long * PSIZE_T
Definition: StackWalker.h:57
Definition: StackWalker.h:136
Definition: StackWalker.h:140
CHAR name[STACKWALK_MAX_NAMELEN]
Definition: StackWalker.h:143
virtual ~StackWalker()
Definition: StackWalker.cc:768
BOOL(__stdcall * PReadProcessMemoryRoutine)(HANDLE hProcess, DWORD64 qwBaseAddress, PVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead, LPVOID pUserData)
Definition: StackWalker.h:110
CHAR undName[STACKWALK_MAX_NAMELEN]
Definition: StackWalker.h:144
Definition: StackWalker.cc:217
LPCSTR symTypeString
Definition: StackWalker.h:151
DWORD lineNumber
Definition: StackWalker.h:148
StackWalker(int options=OptionsAll, LPCSTR szSymPath=NULL, DWORD dwProcessId=GetCurrentProcessId(), HANDLE hProcess=GetCurrentProcess())
Definition: StackWalker.cc:752
unsigned __int64 * PDWORD64
Definition: StackWalker.h:53
Definition: StackWalker.h:89
std::string GetCallstack(void *context=0)
Definition: StackWalker.h:129
static BOOL __stdcall myReadProcMem(HANDLE hProcess, DWORD64 qwBaseAddress, PVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead)
Definition: StackWalker.cc:1126
Definition: StackWalker.h:74
std::ostringstream ostr
Definition: StackWalker.h:178
BOOL ShowCallstack(HANDLE hThread=GetCurrentThread(), const CONTEXT *context=NULL, PReadProcessMemoryRoutine readMemoryFunction=NULL, LPVOID pUserData=NULL)
Definition: StackWalker.cc:900
CHAR loadedImageName[STACKWALK_MAX_NAMELEN]
Definition: StackWalker.h:154
Definition: StackWalker.h:157
Definition: StackWalker.h:95
Definition: StackWalker.h:157
LPSTR m_szSymPath
Definition: StackWalker.h:169
Definition: StackWalker.h:71
Definition: StackWalker.h:80
struct StackWalker::CallstackEntry CallstackEntry
Definition: StackWalker.h:92
CHAR undFullName[STACKWALK_MAX_NAMELEN]
Definition: StackWalker.h:145
DWORD64 offsetFromSmybol
Definition: StackWalker.h:146
DWORD64 offset
Definition: StackWalker.h:142
int size
Definition: eabLatVolData.py:2
unsigned __int64 DWORD64
Definition: StackWalker.h:53
DWORD64 baseOfImage
Definition: StackWalker.h:153
StackWalkerInternal * m_sw
Definition: StackWalker.h:165