+#define ELB_BACKTRACE() \
+ do \
+ { \
+ void* frame_addrs[16]; \
+ char** frame_strings; \
+ size_t backtrace_size; \
+ int i; \
+ backtrace_size = backtrace(frame_addrs, 16); \
+ frame_strings = backtrace_symbols(frame_addrs, backtrace_size); \
+ for (i = 0; i < backtrace_size; ++i) \
+ { \
+ ELBF(ELBT_TRACE, 0, 0, "%d: [0x%x] %s", i, frame_addrs[i], frame_strings[i]); \
+ } \
+ free(frame_strings); \
+ } \
+ while (0);