summaryrefslogtreecommitdiff
path: root/libs/pbd/stacktrace.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2013-03-20 17:20:13 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2013-03-20 17:20:13 -0400
commita5d3f2d57850fabbd6f032518a3a5e2fadce58ce (patch)
tree7ca17726d130b1c2ba975000e7a5aa1597a69434 /libs/pbd/stacktrace.cc
parent16ce39c2309769789784a1f74e41ce0c49a75282 (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.cc20
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;
}
}