Go to the documentation of this file.00001
00017
00018
00019
00020
00021 #include <ecl/config/ecl.hpp>
00022
00023 #ifndef ECL_IS_WIN32
00024
00025
00026
00027
00028
00029 #include <execinfo.h>
00030 #include <signal.h>
00031 #include <cstdlib>
00032 #include <exception>
00033 #include <iostream>
00034
00035
00036
00037
00038
00039 using namespace std;
00040
00041
00042
00043
00044
00048 class ExceptionTracer {
00049 public:
00050 ExceptionTracer() {
00051 void * array[25];
00052 int nSize = backtrace(array, 25);
00053 char ** symbols = backtrace_symbols(array, nSize);
00054
00055 for (int i = 0; i < nSize; i++) {
00056 cout << symbols[i] << endl;
00057 }
00058 free(symbols);
00059 }
00060 };
00061
00062 void f() {
00063 std::cout << "f()" << std::endl;
00064 throw ExceptionTracer();
00065 }
00066
00067
00068
00069
00070 int main(int argc, char **argv) {
00071
00072 std::cout << "Dude" << std::endl;
00073 f();
00074
00075 return 0;
00076 }
00077 #else
00078
00079 int main(int argc, char **argv) {
00080
00081 std::cout << "No backtrace support in windows (that I know of yet)." << std::endl;
00082 return 0;
00083 }
00084 #endif
00085