X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/3347e271cd0ddb7da133ad0e66826cb559e1dd14..c2b67da53caa5f63793426f332a783d00fc5ccf2:/src/xbt/ex.c diff --git a/src/xbt/ex.c b/src/xbt/ex.c index 091a4cd46d..c93ea855b2 100644 --- a/src/xbt/ex.c +++ b/src/xbt/ex.c @@ -18,6 +18,7 @@ #include "xbt/ex.h" #include "xbt/str.h" #include "xbt/module.h" /* xbt_binary_name */ +#include "xbt_modinter.h" /* backtrace initialization headers */ #include "xbt/synchro.h" /* xbt_thread_self */ #include "gras/Virtu/virtu_interface.h" /* gras_os_myname */ @@ -28,7 +29,7 @@ # define HAVE_BACKTRACE 1 /* Hello linux box */ #endif -#if defined(WIN32) && defined(_M_IX86) +#if defined(WIN32) && defined(_M_IX86) && !defined(__GNUC__) # define HAVE_BACKTRACE 1 /* Hello x86 windows box */ #endif @@ -55,21 +56,15 @@ ex_ctx_t *__xbt_ex_ctx_default(void) { /* Change raw libc symbols to file names and line numbers */ void xbt_ex_setup_backtrace(xbt_ex_t *e); -void xbt_backtrace_current(xbt_ex_t *e) { -#ifdef HAVE_BACKTRACE - e->used = backtrace((void**)e->bt,XBT_BACKTRACE_SIZE); - e->bt_strings = NULL; - xbt_ex_setup_backtrace(e); -#endif -} - void xbt_backtrace_display(xbt_ex_t *e) { + xbt_ex_setup_backtrace(e); + #ifdef HAVE_BACKTRACE - int i; - if (e->used == 0) { fprintf(stderr,"(backtrace not set)\n"); } else { + int i; + fprintf(stderr,"Backtrace (displayed in thread %p):\n", (void*)xbt_thread_self()); for (i=1; iused; i++) /* no need to display "xbt_display_backtrace" */ @@ -95,11 +90,10 @@ void xbt_backtrace_display_current(void) { #if defined(HAVE_EXECINFO_H) && defined(HAVE_POPEN) && defined(ADDR2LINE) # include "backtrace_linux.c" -#elif (defined(WIN32) && defined (_M_IX86)) +#elif (defined(WIN32) && defined (_M_IX86)) && !defined(__GNUC__) # include "backtrace_windows.c" #else -void xbt_ex_setup_backtrace(xbt_ex_t *e) { -} +# include "backtrace_dummy.c" #endif /** @brief shows an exception content and the associated stack if available */