打印函数调用栈信息

01.<pre class="cpp" name="code"></pre><br>  
02.<pre class="cpp" name="code">void XXX_debug_print_trace(void)  
03.{  
04.    int j, nptrs;  
05.    void *buffer[100];  
06.    char **strings;  
07.  
08.    nptrs = backtrace(buffer, 100);  
09.  
10.    strings = backtrace_sysbols(buffer, nptrs);  
11.    if(NULL == strings)  
12.    {  
13.        perror("backtrace_sysbols");  
14.        return;  
15.    }  
16.  
17.    for(j=0; j<nptrs; j++)  
18.    {  
19.        XXX_INFO("%s", strings[j]);//printf  
20.    }  
21.  
22.    free(strings);  
23.  
24.    return;  
25.}  
26.  
27.#ifndef XXX_ASSERT_DEBUG  
28.#define XXX_ASSERT(a) {}  
29.#else  
30.#define XXX_ASSERT(a)   \  
31.    do{ \  
32.        if(!(a)){   \  
33.            printf("Assert Bug:("#a") is wrong!\n");  \  
34.            usleep(100);    \  
35.            XXX_debug_print_trace();    \  
36.        }   \  
37.    }while(0)  
38.#endif
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值