Added a convenience function to dump backtraces for gdb-less debugging
authorMartin Willi <martin@revosec.ch>
Mon, 21 May 2012 10:18:49 +0000 (12:18 +0200)
committerMartin Willi <martin@revosec.ch>
Mon, 21 May 2012 10:18:49 +0000 (12:18 +0200)
src/libstrongswan/utils/backtrace.c
src/libstrongswan/utils/backtrace.h

index cb83d98..db10c78 100644 (file)
@@ -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);
+}
+
index 9d59d25..32d0904 100644 (file)
@@ -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_ @}*/