From: Martin Quinson Date: Mon, 31 Oct 2016 22:31:32 +0000 (+0100) Subject: this is definitely a backtrace function X-Git-Tag: v3_14~269 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/103a566e766b806f39e5e1db8d97a0906280297a this is definitely a backtrace function --- diff --git a/src/xbt/backtrace.cpp b/src/xbt/backtrace.cpp index 8831610058..fa82b4d617 100644 --- a/src/xbt/backtrace.cpp +++ b/src/xbt/backtrace.cpp @@ -13,6 +13,7 @@ #include #endif +#include "simgrid/simix.h" /* SIMIX_process_self_get_name() */ #include #include #include @@ -26,6 +27,22 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_backtrace, xbt, "Backtrace"); } +void xbt_backtrace_display(xbt_backtrace_location_t* loc, std::size_t count) +{ +#ifdef HAVE_BACKTRACE + std::vector backtrace = simgrid::xbt::resolveBacktrace(loc, count); + if (backtrace.empty()) { + fprintf(stderr, "(backtrace not set)\n"); + return; + } + fprintf(stderr, "Backtrace (displayed in process %s):\n", SIMIX_process_self_get_name()); + for (std::string const& s : backtrace) + fprintf(stderr, "---> %s\n", s.c_str()); +#else + XBT_ERROR("Cannot display backtrace when compiled without libunwind."); +#endif +} + /** @brief show the backtrace of the current point (lovely while debugging) */ void xbt_backtrace_display_current() { diff --git a/src/xbt/ex.cpp b/src/xbt/ex.cpp index 0291f4ca90..da1dc698b4 100644 --- a/src/xbt/ex.cpp +++ b/src/xbt/ex.cpp @@ -59,34 +59,10 @@ #include "src/xbt/ex_interface.h" #include "simgrid/sg_config.h" /* Configuration mechanism of SimGrid */ -#include "simgrid/simix.h" /* SIMIX_process_self_get_name() */ - - XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_ex, xbt, "Exception mechanism"); xbt_ex::~xbt_ex() {} -/* Change raw libc symbols to file names and line numbers */ -void xbt_setup_backtrace(xbt_backtrace_location_t** loc, std::size_t count, - char** res); - -void xbt_backtrace_display(xbt_backtrace_location_t* loc, std::size_t count) -{ -#ifdef HAVE_BACKTRACE - std::vector backtrace = - simgrid::xbt::resolveBacktrace(loc, count); - if (backtrace.empty()) { - fprintf(stderr, "(backtrace not set)\n"); - return; - } - fprintf(stderr, "Backtrace (displayed in process %s):\n", SIMIX_process_self_get_name()); - for (std::string const& s : backtrace) - fprintf(stderr, "---> %s\n", s.c_str()); -#else - XBT_ERROR("No backtrace on this arch"); -#endif -} - void _xbt_throw( char* message, xbt_errcat_t errcat, int value, const char* file, int line, const char* func)