Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
A first version of the xbt/random module
[simgrid.git] / src / xbt / backtrace.cpp
index 837062a..74126b1 100644 (file)
@@ -5,11 +5,11 @@
 
 #include "src/internal_config.h"
 
-#include "simgrid/simix.h" /* SIMIX_process_self_get_name() */
 #include <xbt/backtrace.hpp>
 #include <xbt/log.h>
 #include <xbt/string.hpp>
 #include <xbt/sysdep.h>
+#include <xbt/virtu.h>
 
 #include <cstddef>
 #include <cstdlib>
 #include <cxxabi.h>
 #endif
 
-#if HAVE_BOOST_STACKTRACE
+#if HAVE_BOOST_STACKTRACE_BACKTRACE
 #define BOOST_STACKTRACE_USE_BACKTRACE
 #include <boost/stacktrace.hpp>
+#elif HAVE_BOOST_STACKTRACE_ADDR2LINE
+#define BOOST_STACKTRACE_USE_ADDR2LINE
+#include <boost/stacktrace.hpp>
 #endif
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_backtrace, xbt, "Backtrace");
@@ -71,14 +74,14 @@ public:
       return false;
     }
   }
-#if HAVE_BOOST_STACKTRACE
+#if HAVE_BOOST_STACKTRACE_BACKTRACE || HAVE_BOOST_STACKTRACE_ADDR2LINE
   boost::stacktrace::stacktrace st;
 #endif
 };
 
 Backtrace::Backtrace()
 {
-#if HAVE_BOOST_STACKTRACE
+#if HAVE_BOOST_STACKTRACE_BACKTRACE || HAVE_BOOST_STACKTRACE_ADDR2LINE
   impl_     = new BacktraceImpl();
   impl_->st = boost::stacktrace::stacktrace();
 #endif
@@ -129,7 +132,7 @@ std::string const Backtrace::resolve() const
 {
   std::string result("");
 
-#if HAVE_BOOST_STACKTRACE
+#if HAVE_BOOST_STACKTRACE_BACKTRACE || HAVE_BOOST_STACKTRACE_ADDR2LINE
   std::stringstream ss;
   ss << impl_->st;
   result.append(ss.str());
@@ -144,7 +147,7 @@ void Backtrace::display() const
     fprintf(stderr, "(backtrace not set -- did you install Boost.Stacktrace?)\n");
     return;
   }
-  fprintf(stderr, "Backtrace (displayed in actor %s):\n", SIMIX_process_self_get_name());
+  fprintf(stderr, "Backtrace (displayed in actor %s):\n", xbt_procname());
   std::fprintf(stderr, "%s\n", backtrace.c_str());
 }