Skyscraper 2.0
StackWalker Class Reference

#include <stackwalker.h>

Inheritance diagram for StackWalker:

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=RetrieveNone, LPCSTR szSymPath=NULL, DWORD dwProcessId=GetCurrentProcessId(), HANDLE hProcess=GetCurrentProcess())
 
 StackWalker (DWORD dwProcessId, HANDLE hProcess)
 
virtual ~StackWalker ()
 
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 52 of file stackwalker.h.

Member Typedef Documentation

◆ CallstackEntry

typedef struct StackWalker::CallstackEntry StackWalker::CallstackEntry
protected

◆ PReadProcessMemoryRoutine

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

Definition at line 99 of file stackwalker.h.

◆ StackWalkOptions

Member Enumeration Documentation

◆ anonymous enum

anonymous enum
Enumerator
STACKWALK_MAX_NAMELEN 

Definition at line 122 of file stackwalker.h.

◆ CallstackEntryType

Enumerator
firstEntry 
nextEntry 
lastEntry 

Definition at line 143 of file stackwalker.h.

◆ StackWalkOptions

Enumerator
RetrieveNone 
RetrieveSymbol 
RetrieveLine 
RetrieveModuleInfo 
RetrieveFileVersion 
RetrieveVerbose 
SymBuildPath 
SymUseSymSrv 
SymAll 
OptionsAll 

Definition at line 55 of file stackwalker.h.

Constructor & Destructor Documentation

◆ StackWalker() [1/2]

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

◆ StackWalker() [2/2]

StackWalker::StackWalker ( DWORD dwProcessId,
HANDLE hProcess )

◆ ~StackWalker()

virtual StackWalker::~StackWalker ( )
virtual

Member Function Documentation

◆ LoadModules()

BOOL StackWalker::LoadModules ( )

◆ myReadProcMem()

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

◆ OnCallstackEntry()

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

◆ OnDbgHelpErr()

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

◆ OnLoadModule()

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

◆ OnOutput()

virtual void StackWalker::OnOutput ( LPCSTR szText)
protectedvirtual

◆ OnSymInit()

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

◆ ShowCallstack()

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

Member Data Documentation

◆ m_dwProcessId

DWORD StackWalker::m_dwProcessId
protected

Definition at line 153 of file stackwalker.h.

◆ m_hProcess

HANDLE StackWalker::m_hProcess
protected

Definition at line 152 of file stackwalker.h.

◆ m_MaxRecursionCount

int StackWalker::m_MaxRecursionCount
protected

Definition at line 158 of file stackwalker.h.

◆ m_modulesLoaded

BOOL StackWalker::m_modulesLoaded
protected

Definition at line 154 of file stackwalker.h.

◆ m_options

int StackWalker::m_options
protected

Definition at line 157 of file stackwalker.h.

◆ m_sw

StackWalkerInternal* StackWalker::m_sw
protected

Definition at line 151 of file stackwalker.h.

◆ m_szSymPath

LPSTR StackWalker::m_szSymPath
protected

Definition at line 155 of file stackwalker.h.

◆ StackWalkerInternal

friend StackWalker::StackWalkerInternal
protected

Definition at line 162 of file stackwalker.h.


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