All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Backtrace.h
1 #pragma once
2 
3 #include <string>
4 #include "Types.h"
5 
6 namespace Eegeo
7 {
8  class Backtrace
9  {
10  public:
11 
12  Backtrace();
13  void Capture();
14  u32 GetStackDepth() const { return m_stackDepth; }
15  void* operator[] (const u32 index) { return m_stack[index]; }
16  std::string GetSymbolNameAtIndex(u32 index) const;
17  std::string GetSymbolicatedStackString(const std::string& separator = "->") const;
18  std::string GetRawStackString(const std::string& separator = "->") const;
19 
20  private:
21 
22  static void OneTimeInit();
23 
24  static bool m_isInitialized;
25 #if defined(EEGEO_WIN)
26  static HANDLE m_currentProcess;
27 #endif
28  static const int MaxStackDepth = 32;
29  void* m_stack[MaxStackDepth];
30  u32 m_stackDepth;
31  };
32 };