diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2013-03-20 17:20:13 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2013-03-20 17:20:13 -0400 |
commit | a5d3f2d57850fabbd6f032518a3a5e2fadce58ce (patch) | |
tree | 7ca17726d130b1c2ba975000e7a5aa1597a69434 /libs/pbd/stacktrace.cc | |
parent | 16ce39c2309769789784a1f74e41ce0c49a75282 (diff) |
make PBD::stacktrace() be clear if it cannot generate stacktraces for some (runtime) reason. not sure why this is an issue, but it is, right now, on my machine
Diffstat (limited to 'libs/pbd/stacktrace.cc')
-rw-r--r-- | libs/pbd/stacktrace.cc | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/libs/pbd/stacktrace.cc b/libs/pbd/stacktrace.cc index dd5e1fd3b6..ca614509a5 100644 --- a/libs/pbd/stacktrace.cc +++ b/libs/pbd/stacktrace.cc @@ -77,15 +77,21 @@ PBD::stacktrace (std::ostream& out, int levels) size_t i; size = backtrace (array, 200); - strings = backtrace_symbols (array, size); - - if (strings) { - for (i = 0; i < size && (levels == 0 || i < size_t(levels)); i++) { - out << " " << demangle (strings[i]) << std::endl; + if (size) { + strings = backtrace_symbols (array, size); + + if (strings) { + + for (i = 0; i < size && (levels == 0 || i < size_t(levels)); i++) { + out << " " << demangle (strings[i]) << std::endl; + std::cerr << " " << demangle (strings[i]) << std::endl; + } + + free (strings); } - - free (strings); + } else { + out << "no stacktrace available!" << std::endl; } } |