linux打印当前函数调用栈backtrace

不多说,见如下文件。

点击(此处)折叠或打开

  1. backtrace.c:

  2. #include <execinfo.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>

  5. #define BT_MAX_TRACE 100

  6. void print_trace (void)
  7. {
  8.     void *array[BT_MAX_TRACE];
  9.     size_t size;
  10.     char **strings;
  11.     size_t i;

  12.     size = backtrace (array, BT_MAX_TRACE);
  13.     strings = backtrace_symbols (array, size);

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

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

  17.     free (strings);
  18. }


  19. void dummy_function (void)
  20. {
  21.     print_trace ();
  22. }
  23. void test1()
  24. {
  25.  dummy_function();
  26. }
  27. void test2()
  28. {
  29.  test1();
  30. }

  31. int main (void)
  32. {
  33.     test2();
  34.     return 0;
  35. }

编译成backtrace,执行即可看出效果:gcc -g -rdynamic -o backtrace backtrace.c

# ./bt
Obtained 7 stack frames.
./bt(print_trace+0x1f) [0x80487b3]
./bt(dummy_function+0xb) [0x8048822]
./bt(test1+0xb) [0x804882f]
./bt(test2+0xb) [0x804883c]
./bt(main+0xb) [0x8048849]
/lib/tls/i686/cmov/libc.so.6(__libc_start_main+0xe6) [0x17fbd6]
./bt() [0x8048701]

阅读(123) | 评论(0) | 转发(0) |
0

上一篇:zfs当中的事务处理研究与探索

下一篇:zfs当中的事务处理(二)

相关热门文章
  • 标准输入输出函数
  • Linux errno 错误对照表
  • 在驱动模块初始化函数中实现设...
  • expect 总结(一)
  • 3月13日外电头条:云服务颠覆...
  • 承接自动化测试培训、外包、实...
  • Solaris PowerTOP 1.0 发布
  • For STKMonitor
  • 项目小体会
  • 不用学的汉字输入法 智能H3输...
  • 这样配置的服务器能够承受8k并...
  • vm里的系统能够ping到nfs,但...
  • bind是否随机从两台master中读...
  • 在win7下用cygwin搭建hadoop,...
  • Mysql的binglog日志能否分库备...
给主人留下些什么吧!~~
评论热议

你可能感兴趣的:(linux打印当前函数调用栈backtrace)