Developer Documentation
StackWalker Class Reference
Inheritance diagram for StackWalker:
StackWalkerToConsole

Classes

struct  CallstackEntry
 

Public Types

enum  StackWalkOptions {
  RetrieveNone = 0 , RetrieveSymbol = 1 , RetrieveLine = 2 , RetrieveModuleInfo = 4 ,
  RetrieveFileVersion = 8 , RetrieveVerbose = 0xF , SymBuildPath = 0x10 , SymUseSymSrv = 0x20 ,
  SymAll = 0x30 , OptionsAll = 0x3F
}
 
enum  { STACKWALK_MAX_NAMELEN = 1024 }
 
typedef enum StackWalker::StackWalkOptions StackWalkOptions
 
typedef BOOL(__stdcall * PReadProcessMemoryRoutine) (HANDLE hProcess, DWORD64 qwBaseAddress, PVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead, LPVOID pUserData)
 

Public Member Functions

 StackWalker (int options=OptionsAll, LPCSTR szSymPath=NULL, DWORD dwProcessId=GetCurrentProcessId(), HANDLE hProcess=GetCurrentProcess())
 
 StackWalker (DWORD dwProcessId, HANDLE hProcess)
 
BOOL LoadModules ()
 
BOOL ShowCallstack (HANDLE hThread=GetCurrentThread(), const CONTEXT *context=NULL, PReadProcessMemoryRoutine readMemoryFunction=NULL, LPVOID pUserData=NULL)
 

Protected Types

enum  CallstackEntryType { firstEntry , nextEntry , lastEntry }
 
typedef struct StackWalker::CallstackEntry CallstackEntry
 

Protected Member Functions

virtual void OnSymInit (LPCSTR szSearchPath, DWORD symOptions, LPCSTR szUserName)
 
virtual void OnLoadModule (LPCSTR img, LPCSTR mod, DWORD64 baseAddr, DWORD size, DWORD result, LPCSTR symType, LPCSTR pdbName, ULONGLONG fileVersion)
 
virtual void OnCallstackEntry (CallstackEntryType eType, CallstackEntry &entry)
 
virtual void OnDbgHelpErr (LPCSTR szFuncName, DWORD gle, DWORD64 addr)
 
virtual void OnOutput (LPCSTR szText)
 

Static Protected Member Functions

static BOOL __stdcall myReadProcMem (HANDLE hProcess, DWORD64 qwBaseAddress, PVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead)
 

Protected Attributes

StackWalkerInternalm_sw
 
HANDLE m_hProcess
 
DWORD m_dwProcessId
 
BOOL m_modulesLoaded
 
LPSTR m_szSymPath
 
int m_options
 
int m_MaxRecursionCount
 
friend StackWalkerInternal
 

Detailed Description

Definition at line 56 of file StackWalker.hh.

Member Typedef Documentation

◆ PReadProcessMemoryRoutine

typedef BOOL(__stdcall * StackWalker::PReadProcessMemoryRoutine) (HANDLE hProcess, DWORD64 qwBaseAddress, PVOID lpBuffer, DWORD nSize, LPDWORD lpNumberOfBytesRead, LPVOID pUserData)

Definition at line 102 of file StackWalker.hh.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Definition at line 125 of file StackWalker.hh.

◆ CallstackEntryType

enum StackWalker::CallstackEntryType
protected

Definition at line 146 of file StackWalker.hh.

◆ StackWalkOptions

enum StackWalker::StackWalkOptions

Definition at line 59 of file StackWalker.hh.

Constructor & Destructor Documentation

◆ StackWalker() [1/2]

StackWalker::StackWalker ( int  options = OptionsAll,
LPCSTR  szSymPath = NULL,
DWORD  dwProcessId = GetCurrentProcessId(),
HANDLE  hProcess = GetCurrentProcess() 
)

Definition at line 862 of file StackWalker.cc.

◆ StackWalker() [2/2]

StackWalker::StackWalker ( DWORD  dwProcessId,
HANDLE  hProcess 
)

Definition at line 852 of file StackWalker.cc.

◆ ~StackWalker()

StackWalker::~StackWalker ( )
virtual

Definition at line 879 of file StackWalker.cc.

Member Function Documentation

◆ LoadModules()

BOOL StackWalker::LoadModules ( )

Definition at line 889 of file StackWalker.cc.

◆ myReadProcMem()

BOOL __stdcall StackWalker::myReadProcMem ( HANDLE  hProcess,
DWORD64  qwBaseAddress,
PVOID  lpBuffer,
DWORD  nSize,
LPDWORD  lpNumberOfBytesRead 
)
staticprotected

Definition at line 1256 of file StackWalker.cc.

◆ OnCallstackEntry()

void StackWalker::OnCallstackEntry ( CallstackEntryType  eType,
CallstackEntry entry 
)
protectedvirtual

Definition at line 1299 of file StackWalker.cc.

◆ OnDbgHelpErr()

void StackWalker::OnDbgHelpErr ( LPCSTR  szFuncName,
DWORD  gle,
DWORD64  addr 
)
protectedvirtual

Definition at line 1328 of file StackWalker.cc.

◆ OnLoadModule()

void StackWalker::OnLoadModule ( LPCSTR  img,
LPCSTR  mod,
DWORD64  baseAddr,
DWORD  size,
DWORD  result,
LPCSTR  symType,
LPCSTR  pdbName,
ULONGLONG  fileVersion 
)
protectedvirtual

Definition at line 1278 of file StackWalker.cc.

◆ OnOutput()

void StackWalker::OnOutput ( LPCSTR  szText)
protectedvirtual

Definition at line 1385 of file StackWalker.cc.

◆ OnSymInit()

void StackWalker::OnSymInit ( LPCSTR  szSearchPath,
DWORD  symOptions,
LPCSTR  szUserName 
)
protectedvirtual

Definition at line 1340 of file StackWalker.cc.

◆ ShowCallstack()

BOOL StackWalker::ShowCallstack ( HANDLE  hThread = GetCurrentThread(),
const CONTEXT *  context = NULL,
PReadProcessMemoryRoutine  readMemoryFunction = NULL,
LPVOID  pUserData = NULL 
)

Definition at line 1011 of file StackWalker.cc.

Member Data Documentation

◆ m_dwProcessId

DWORD StackWalker::m_dwProcessId
protected

Definition at line 156 of file StackWalker.hh.

◆ m_hProcess

HANDLE StackWalker::m_hProcess
protected

Definition at line 155 of file StackWalker.hh.

◆ m_MaxRecursionCount

int StackWalker::m_MaxRecursionCount
protected

Definition at line 161 of file StackWalker.hh.

◆ m_modulesLoaded

BOOL StackWalker::m_modulesLoaded
protected

Definition at line 157 of file StackWalker.hh.

◆ m_options

int StackWalker::m_options
protected

Definition at line 160 of file StackWalker.hh.

◆ m_sw

StackWalkerInternal* StackWalker::m_sw
protected

Definition at line 154 of file StackWalker.hh.

◆ m_szSymPath

LPSTR StackWalker::m_szSymPath
protected

Definition at line 158 of file StackWalker.hh.

◆ StackWalkerInternal

friend StackWalker::StackWalkerInternal
protected

Definition at line 165 of file StackWalker.hh.


The documentation for this class was generated from the following files: