diff options
author | Taybin Rutkin <taybin@taybin.com> | 2006-06-29 22:21:30 +0000 |
---|---|---|
committer | Taybin Rutkin <taybin@taybin.com> | 2006-06-29 22:21:30 +0000 |
commit | 481f7c39655afec832ac10430dd61a3bb464aa58 (patch) | |
tree | cde736699cbe49374a6aaa079258f88c1d0c7059 /libs/pbd/stacktrace.cc | |
parent | d1a4f74ef2c86042a0cbe0e83e611596df27575f (diff) |
Fixed i18n system.
Renamed pbd3 back to pbd, since it's version 4.1 now.
Very minor fixes
git-svn-id: svn://localhost/ardour2/trunk@656 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/pbd/stacktrace.cc')
-rw-r--r-- | libs/pbd/stacktrace.cc | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/libs/pbd/stacktrace.cc b/libs/pbd/stacktrace.cc new file mode 100644 index 0000000000..1e7dfa08e9 --- /dev/null +++ b/libs/pbd/stacktrace.cc @@ -0,0 +1,42 @@ +#include <pbd/stacktrace.h> +#include <iostream> + +/* Obtain a backtrace and print it to stdout. */ + +#ifdef HAVE_EXECINFO + +#include <execinfo.h> +#include <stdlib.h> + +void +PBD::stacktrace (std::ostream& out) +{ + void *array[200]; + size_t size; + char **strings; + size_t i; + + size = backtrace (array, 200); + strings = backtrace_symbols (array, size); + + if (strings) { + + printf ("Obtained %zd stack frames.\n", size); + + for (i = 0; i < size; i++) { + out << strings[i] << std::endl; + } + + free (strings); + } +} + +#else + +void +PBD::stacktrace (std::ostream& out) +{ + out << "stack tracing is not enabled on this platform" << std::endl; +} + +#endif /* HAVE_EXECINFO */ |