]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
lockdep: BackTrace.h
authorSage Weil <sage@newdream.net>
Mon, 3 Nov 2008 03:50:07 +0000 (19:50 -0800)
committerSage Weil <sage@newdream.net>
Mon, 3 Nov 2008 03:50:07 +0000 (19:50 -0800)
src/common/BackTrace.h [new file with mode: 0644]

diff --git a/src/common/BackTrace.h b/src/common/BackTrace.h
new file mode 100644 (file)
index 0000000..e9249b5
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef _CEPH_BACKTRACE
+#define _CEPH_BACKTRACE
+
+#include <execinfo.h>
+
+struct BackTrace {
+  const static int max = 100;
+
+  int skip;
+  void *array[max];
+  size_t size;
+  char **strings;
+
+  BackTrace(int s) : skip(s) {
+    size = backtrace(array, max);
+    strings = backtrace_symbols(array, size);
+  }
+  ~BackTrace() {
+    free(strings);
+  }
+
+  void print(ostream& out) {
+    for (size_t i = skip; i < size; i++)
+      out << " " << (i-skip+1) << ": " << strings[i] << std::endl;
+  }
+
+};
+
+#endif