linux之backtrace

backtrace用于打印函数调用堆栈

/*******************************************************************************
* File Name        : backtrace.c
* Author        : zjw
* Email            : [email protected]
* Create Time    : 2015年03月30日 星期一 09时44分15秒
*******************************************************************************/
#include <execinfo.h>
#include <stdio.h>
#include <stdlib.h>

void print_trace()
{
    void *array[10];
    int size = 0;
    char **strings = NULL;
    int i = 0;

    size = backtrace(array, 10);
    strings = backtrace_symbols(array, size);
    if (strings == NULL)
    {
        perror("backtrace_symbols");
        exit(-1);
    }

    printf("Obtained %zd stack frames.\n", size);

    for (i = 0; i < size; i++)
    {
        printf("%s\n", strings[i]);
    }

    free(strings);
    strings = NULL;
}

void dump_function()
{
    print_trace();
}

int main(int argc, char **argv)
{
    dump_function();

    return 0;
}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。