void print_stack_trace() { void *array[200]; size_t size; char **strings = NULL; size_t i; //use -rdynamic flag when compiling size = backtrace (array, 200); strings = backtrace_symbols (array, size); if ( strings ) { fprintf(stderr, "----------------------------------------\n"); for (i = 0; i < size; i++) fprintf(stderr, "%s\n", strings[i]); free(strings); } }