Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

83 lines
1.8 KiB

//-----------------------------------------------------------------------------
//
// File: stacktrace.h
// Copyright (C) 1994-1997 Microsoft Corporation
// All rights reserved.
//
// Provides a mechanism for generating stacktraces and converting them to
// human readable form.
//
//-----------------------------------------------------------------------------
#ifndef ESPUTIL_STACKTRACE_H
#define ESPUTIL_STACKTRACE_H
const UINT MODULE_NAME_LEN = 64;
const UINT SYMBOL_NAME_LEN = 128;
//
// 'human readable' form of a stack-frame. Provides module and function name.
namespace LocStudio {
struct SYMBOL_INFO
{
DWORD dwAddress;
DWORD dwOffset;
TCHAR szModule[MODULE_NAME_LEN];
TCHAR szSymbol[SYMBOL_NAME_LEN];
BOOL fSymbolLocated;
};
} // namespace LocStudio
#pragma warning(disable:4275)
//
// How we return a complete human readable stack walk.
//
class LTAPIENTRY CSymbolList : public CTypedPtrList<CPtrList, LocStudio::SYMBOL_INFO *>
{
public:
CSymbolList();
void Clear(void);
~CSymbolList();
private:
CSymbolList(const CSymbolList &);
void operator=(const CSymbolList &);
};
#pragma warning(default:4275)
//
// Class for generating stack traces. Provides both native (compact) data
// (in case you want to store it for later), and a human (versbose) form.
//
#pragma warning(disable : 4251)
class LTAPIENTRY CStackTrace
{
public:
CStackTrace();
~CStackTrace();
void CreateStackTrace(void);
void CreateStackTrace(UINT nSkip, UINT nTotal);
void SetAddresses(const CDWordArray &);
const CDWordArray &GetAddresses(void) const;
void GetSymbolList(CSymbolList &) const;
private:
CStackTrace(const CStackTrace &);
void operator=(const CStackTrace &);
CDWordArray m_adwAddresses;
};
#pragma warning(default : 4251)
#endif