GCS  0.2.3
gu_backtrace.hpp
1 // Copyright (C) 2012 Codership Oy <info@codership.com>
2 
3 #ifndef GU_BACKTRACE_HPP
4 #define GU_BACKTRACE_HPP
5 
6 #include "gu_backtrace.h"
7 
8 #include <cstdlib>
9 #include <ostream>
10 
11 namespace gu
12 {
16  class Backtrace
17  {
18  public:
24  Backtrace(int size = 50)
25  :
26  symbols_size_(size),
27  symbols_(gu_backtrace(&symbols_size_))
28  { }
29 
30  ~Backtrace()
31  {
32  free(symbols_);
33  }
34 
41  void print(std::ostream& os, char delim = '\n')
42  {
43  if (symbols_ != 0)
44  {
45  for (int i(0); i < symbols_size_; ++i)
46  {
47  os << symbols_[i] << delim;
48  }
49  }
50  else
51  {
52  os << "no backtrace available";
53  }
54  }
55 
56  private:
57  Backtrace(const Backtrace&);
58  void operator=(const Backtrace&);
59  int symbols_size_;
60  char** symbols_;
61  };
62 }
63 
64 
65 #endif // GU_BACKTRACE_HPP
Backtrace(int size=50)
Definition: gu_backtrace.hpp:24
void print(std::ostream &os, char delim= '\n')
Definition: gu_backtrace.hpp:41
Definition: gu_backtrace.hpp:16