main.cpp
Go to the documentation of this file.
1 #include <backward/backward.hpp>
2 #include <iostream>
3 #include <stdexcept>
4 #include <sstream>
5 
6 using namespace backward;
7 
8 class TracedException : public std::runtime_error
9 {
10 public:
12  std::runtime_error(_get_trace())
13  {}
14 
15 private:
16  std::string _get_trace()
17  {
18  std::ostringstream ss;
19 
20  StackTrace stackTrace;
21  TraceResolver resolver;
22  stackTrace.load_here();
23  resolver.load_stacktrace(stackTrace);
24 
25  for(std::size_t i = 0; i < stackTrace.size(); ++i)
26  {
27  const ResolvedTrace trace = resolver.resolve(stackTrace[i]);
28 
29  ss << "#" << i << " at " << trace.object_function << "\n";
30  }
31 
32  return ss.str();
33  }
34 };
35 
36 void f(int i)
37 {
38  if(i >= 42)
39  {
40  throw TracedException();
41  }
42  else
43  {
44  std::cout << "i=" << i << "\n";
45  f(i + 1);
46  }
47 }
48 
49 int main()
50 {
51  try
52  {
53  f(0);
54  } catch (const TracedException& ex)
55  {
56  std::cout << ex.what();
57  }
58 }
59 
60 
backward::StackTrace
Definition: backward.hpp:1207
TracedException::_get_trace
std::string _get_trace()
Definition: main.cpp:16
TracedException::TracedException
TracedException()
Definition: main.cpp:11
backward::TraceResolver
Definition: backward.hpp:3676
TracedException
Definition: main.cpp:8
backward::StackTraceImpl::size
size_t size() const
Definition: backward.hpp:712
backward::ResolvedTrace::object_function
std::string object_function
Definition: backward.hpp:689
main
int main()
Definition: main.cpp:49
backward::ResolvedTrace
Definition: backward.hpp:666
f
void f(int i)
Definition: main.cpp:36
std
backward::StackTraceImpl::load_here
size_t load_here(size_t=0)
Definition: backward.hpp:714
backward
Definition: backward.hpp:419


backward_ros
Author(s):
autogenerated on Tue Mar 1 2022 23:50:48