TYPE3
[iec.git] / src / type3_AndroidCloud / anbox-master / external / backward-cpp / test_package / main.cpp
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:
11     TracedException() :
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