40 DebugStackwalk(
const DebugStackwalk&);
41 DebugStackwalk& operator=(DebugStackwalk&);
56 enum { MAX_ADDR = 256 };
62 unsigned m_addr[MAX_ADDR];
74 unsigned Size(
void)
const {
return m_numAddr; }
95 unsigned m=m_numAddr<other.m_numAddr?m_numAddr:other.m_numAddr;
96 for (
unsigned k=0;k<m;k++)
98 if (m_addr[m_numAddr-k-1]<other.m_addr[other.m_numAddr-k-1])
100 if (m_addr[m_numAddr-k-1]>other.m_addr[other.m_numAddr-k-1])
103 return m_numAddr<other.m_numAddr;
116 static void GetSymbol(
unsigned addr,
char *buf,
unsigned bufSize);
134 char *bufMod,
unsigned sizeMod,
unsigned *relMod,
135 char *bufSym,
unsigned sizeSym,
unsigned *relSym,
136 char *bufFile,
unsigned sizeFile,
unsigned *line,
unsigned *relLine);
160 static int StackWalk(Signature &sig,
struct _CONTEXT *ctx=0);
Debug module main class (singleton).
static void GetSymbol(unsigned addr, char *buf, unsigned bufSize)
Determines symbol for given address.
Signature & operator=(const Signature &src)
bool operator<(const Signature &other) const
Strong ordering operator.
friend class DebugStackwalk
unsigned GetAddress(int n) const
Get a single address from the signature.
unsigned Size(void) const
Determine the number of addresses in this signature.
static int StackWalk(Signature &sig, struct _CONTEXT *ctx=0)
Walks the stack from the given address.
static void * GetDbghelpHandle(void)
static bool IsOldDbghelp(void)
Debug & operator<<(Debug &dbg, const DebugStackwalk::Signature &sig)
Dumps a complete signature with symbols.