天天看點

函數調用棧列印(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();
}
           

繼續閱讀