c 打印函数堆栈

【c 打印函数堆栈】代码

#include #include #include void fun1(); void fun2(); void fun3(); void print_stacktrace(); int main() { fun3(); } void fun1() { printf("stackstrace begin:\n"); print_stacktrace(); } void fun2() { fun1(); } void fun3() { fun2(); } void print_stacktrace() { int size = 16; void * array[16]; int stack_num = backtrace(array, size); char ** stacktrace = backtrace_symbols(array, stack_num); for (int i = 0; i < stack_num; ++i) { printf("%s\n", stacktrace[i]); } free(stacktrace); }

编译
gcc test.cc -rdynamic -g -o test3

    推荐阅读