summaryrefslogtreecommitdiff
path: root/libddekit
diff options
context:
space:
mode:
Diffstat (limited to 'libddekit')
-rw-r--r--libddekit/include/ddekit/printf.h2
-rw-r--r--libddekit/printf.c12
2 files changed, 14 insertions, 0 deletions
diff --git a/libddekit/include/ddekit/printf.h b/libddekit/include/ddekit/printf.h
index 35b0dfa1..6dafa18d 100644
--- a/libddekit/include/ddekit/printf.h
+++ b/libddekit/include/ddekit/printf.h
@@ -18,6 +18,8 @@ int ddekit_printf(const char *fmt, ...);
*/
int ddekit_vprintf(const char *fmt, va_list va);
+void dump_stack(void);
+
/** Log function and message.
* \ingroup DDEKit_util
*/
diff --git a/libddekit/printf.c b/libddekit/printf.c
index dacc65e6..c4a8b718 100644
--- a/libddekit/printf.c
+++ b/libddekit/printf.c
@@ -10,6 +10,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <mach.h>
+#include <execinfo.h>
#include "ddekit/printf.h"
@@ -93,3 +94,14 @@ int log_init ()
return 0;
}
+
+void dump_stack()
+{
+#define NUM_TRACES 16
+ void *trace[NUM_TRACES];
+ int trace_size = 0;
+
+ fprintf (stderr, "dump the stack\n");
+ trace_size = backtrace(trace, NUM_TRACES);
+ backtrace_symbols_fd(trace, trace_size, 2);
+}