Chinaunix首页 | 论坛 | 博客
  • 博客访问: 98812
  • 博文数量: 6
  • 博客积分: 157
  • 博客等级: 民兵
  • 技术积分: 102
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-25 14:18
文章分类

全部博文(6)

文章存档

2013年(1)

2012年(5)

分类: LINUX

2012-12-25 14:43:42

不多说,见如下文件。

点击(此处)折叠或打开

  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]

阅读(4970) | 评论(4) | 转发(2) |
给主人留下些什么吧!~~

lmnos2013-01-01 17:21:41

Bean_lee: 我的博文是不是很无趣啊,都是一些很基础很基础的东西。
自己以前基础不好,现在总想把基础搞好.....
至少比我的有趣,LMOS-00.03出来了,欢迎拍砖

Bean_lee2013-01-01 17:19:11

lmnos: 你写的比他这个细.....
我的博文是不是很无趣啊,都是一些很基础很基础的东西。
自己以前基础不好,现在总想把基础搞好

lmnos2013-01-01 16:57:58

Bean_lee: 我写了一篇关于这个文章,欢迎去拍砖.....
你写的比他这个细

Bean_lee2013-01-01 15:38:43

我写了一篇关于这个文章,欢迎去拍砖