X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/931c72e9293d64a1797a6187dd0e744408c23d59..07c12189c716ea527ddcf8f8b55983213dead2bf:/src/xbt/ex.cpp diff --git a/src/xbt/ex.cpp b/src/xbt/ex.cpp index 2ba06986dd..da1dc698b4 100644 --- a/src/xbt/ex.cpp +++ b/src/xbt/ex.cpp @@ -48,56 +48,29 @@ #include #include "src/internal_config.h" /* execinfo when available */ #include "xbt/ex.h" +#include #include "xbt/log.h" #include "xbt/log.hpp" #include "xbt/backtrace.h" #include "xbt/backtrace.hpp" #include "xbt/str.h" -#include "xbt/synchro_core.h" #include "src/xbt_modinter.h" /* backtrace initialization headers */ #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( +void _xbt_throw( char* message, xbt_errcat_t errcat, int value, const char* file, int line, const char* func) { - xbt_ex e(message); + xbt_ex e(simgrid::xbt::ThrowPoint(file, line, func), message); free(message); e.category = errcat; e.value = value; - e.file = file; - e.line = line; - e.func = func; throw e; } @@ -146,6 +119,7 @@ const char *xbt_ex_catname(xbt_errcat_t cat) #ifdef SIMGRID_TEST #include #include "xbt/ex.h" +#include XBT_TEST_SUITE("xbt_ex", "Exception Handling");