#include <assert.h>
#include <errno.h>
+#ifdef HAVE_EXECINFO_H
+#include <execinfo.h>
+#endif
+
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
_eina_log_print_prefix(stderr, d, level, file, fnc, line);
vfprintf(stderr, fmt, args);
putc('\n', stderr);
+# if defined HAVE_BACKTRACE && defined HAVE_BACKTRACE_SYMBOLS
+ if (getenv("EINA_LOG_BACKTRACE"))
+ {
+ void *bt[256];
+ char **strings;
+ int btlen;
+ int i;
+
+ btlen = backtrace((void **)bt, 256);
+ strings = backtrace_symbols((void **)bt, btlen);
+ fprintf(stderr, "*** Backtrace ***\n");
+ for (i = 0; i < btlen; ++i)
+ fprintf(stderr, "%s\n", strings[i]);
+ free(strings);
+ }
+# endif
#else
(void) d;
(void) level;
_eina_log_print_prefix(stdout, d, level, file, fnc, line);
vprintf(fmt, args);
putchar('\n');
+# if defined HAVE_BACKTRACE && defined HAVE_BACKTRACE_SYMBOLS
+ if (getenv("EINA_LOG_BACKTRACE"))
+ {
+ void *bt[256];
+ char **strings;
+ int btlen;
+ int i;
+
+ btlen = backtrace((void **)bt, 256);
+ strings = backtrace_symbols((void **)bt, btlen);
+ fprintf(stdout, "*** Backtrace ***\n");
+ for (i = 0; i < btlen; ++i)
+ fprintf(stdout, "%s\n", strings[i]);
+ free(strings);
+ }
+# endif
#else
(void) d;
(void) level;
#endif
fprintf(f, "%s<%u> %s:%d %s() ", d->name, eina_log_pid_get(),
file, line, fnc);
+# if defined HAVE_BACKTRACE && defined HAVE_BACKTRACE_SYMBOLS
+ if (getenv("EINA_LOG_BACKTRACE"))
+ {
+ void *bt[256];
+ char **strings;
+ int btlen;
+ int i;
+
+ btlen = backtrace((void **)bt, 256);
+ strings = backtrace_symbols((void **)bt, btlen);
+ fprintf(f, "*** Backtrace ***\n");
+ for (i = 0; i < btlen; ++i)
+ fprintf(f, "%s\n", strings[i]);
+ free(strings);
+ }
+# endif
#ifdef EFL_HAVE_THREADS
end:
#endif
(void) args;
#endif
}
+