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
打印函数调用栈信息
最新推荐文章于 2024-03-07 20:08:05 发布