void xbt_backtrace_display(xbt_ex_t * e) { xbt_ex_setup_backtrace(e); #ifdef HAVE_BACKTRACE 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; i < e->used; i++) /* no need to display "xbt_display_backtrace" */ fprintf(stderr, "---> %s\n", e->bt_strings[i] + 4); } /* don't fool xbt_ex_free with uninitialized msg field */ e->msg = NULL; e->remote = 0; xbt_ex_free(*e); #else XBT_ERROR("No backtrace on this arch"); #endif }
const char *xbt_thread_self_name(void) { xbt_thread_t me = xbt_thread_self(); return me ? me->name : "maestro"; }