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
推荐阅读
- 一起来学习C语言的字符串转换函数
- C语言字符函数中的isalnum()和iscntrl()你都知道吗
- C语言浮点函数中的modf和fmod详解
- C语言中的时间函数clock()和time()你都了解吗
- 概率论/统计学|随机变量 的 分布函数 与 概率密度函数 的区别
- Java|规范的打印日志
- vue组件中为何data必须是一个函数()
- iOS-Swift-map|iOS-Swift-map filter reduce、函数式编程
- R语言|R语言 函数
- 2018-05-30闭包和函数