From 32400cd91a5258ec40fa2f9740bf7e41ed118a87 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Mon, 21 May 2012 12:18:49 +0200 Subject: Added a convenience function to dump backtraces for gdb-less debugging --- src/libstrongswan/utils/backtrace.c | 17 +++++++++++++++++ src/libstrongswan/utils/backtrace.h | 9 +++++++++ 2 files changed, 26 insertions(+) (limited to 'src/libstrongswan') diff --git a/src/libstrongswan/utils/backtrace.c b/src/libstrongswan/utils/backtrace.c index cb83d9830..db10c7844 100644 --- a/src/libstrongswan/utils/backtrace.c +++ b/src/libstrongswan/utils/backtrace.c @@ -248,3 +248,20 @@ backtrace_t *backtrace_create(int skip) return &this->public; } +/** + * See header + */ +void backtrace_dump(char *label, FILE *file, bool detailed) +{ + backtrace_t *backtrace; + + backtrace = backtrace_create(2); + + if (label) + { + fprintf(file, "Debug backtrace: %s\n", label); + } + backtrace->log(backtrace, file, detailed); + backtrace->destroy(backtrace); +} + diff --git a/src/libstrongswan/utils/backtrace.h b/src/libstrongswan/utils/backtrace.h index 9d59d2503..32d09043f 100644 --- a/src/libstrongswan/utils/backtrace.h +++ b/src/libstrongswan/utils/backtrace.h @@ -77,4 +77,13 @@ struct backtrace_t { */ backtrace_t *backtrace_create(int skip); +/** + * Create a backtrace, dump it and clean it up. + * + * @param label description to print for this backtrace, or NULL + * @param file FILE to log backtrace to + * @param detailed TRUE to resolve line/file using addr2line (slow) + */ +void backtrace_dump(char *label, FILE *file, bool detailed); + #endif /** BACKTRACE_H_ @}*/ -- cgit v1.2.3