C语言打印函数调用堆栈
#include <stdio.h> #include <stdlib.h> #include <execinfo.h> void print_backtrace(void) { void *bt[64]; char **btsym; int i, n; n = backtrace(bt, sizeof(bt)/sizeof(bt[0])); btsym = backtrace_symbols(bt, n); /* get all backtrace, including this function */ for (i = 0; i < n; i++) { printf("%s:backtrace[%d]=%s\n", __FUNCTION__, i, btsym[i]); } free(btsym); } void main(void) { print_backtrace(); }