C语言打印函数调用堆栈

发布时间 2023-08-01 14:00:40作者: 柠檬宝烧

 

 

#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();
}