#include #include #ifdef __GNUC__ #include #include #endif #include "./stacktrace.h" #define N 100 void print_stacktrace(void) { #ifdef __GNUC__ void *array[N]; int size; size = backtrace(array, N); if (size <= 0) { return; } fprintf(stderr, "Stacktrace: \n"); backtrace_symbols_fd(array + 1, size - 1, STDERR_FILENO); #endif } void __trace_assert(const char *file, int line, const char *function, const char *message) { fprintf( stderr, "%s:%d: %s: Assertion `%s' failed\n", file, line, function, message); print_stacktrace(); exit(1); }