common: add print_trace() for backtracing
[model-checker.git] / common.cc
diff --git a/common.cc b/common.cc
new file mode 100644 (file)
index 0000000..8cb649b
--- /dev/null
+++ b/common.cc
@@ -0,0 +1,25 @@
+#include <execinfo.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "common.h"
+
+#define MAX_TRACE_LEN 100
+
+/** Print a backtrace of the current program state. */
+void print_trace(void)
+{
+       void *array[MAX_TRACE_LEN];
+       char **strings;
+       int size, i;
+
+       size = backtrace(array, MAX_TRACE_LEN);
+       strings = backtrace_symbols(array, size);
+
+       printf("\nDumping stack trace (%d frames):\n", size);
+
+       for (i = 0; i < size; i++)
+               printf("\t%s\n", strings[i]);
+
+       free(strings);
+}