乐趣区

关于c:c-打印函数堆栈

代码

#include <execinfo .h>
#include <stdio .h>
#include <stdlib .h>
 
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
退出移动版