使用__builtin_return_address(level)和objdump查找bug和宕机

原创 2012年03月27日 21:36:50

有些时候我们很难知道问题出在哪里,特别是类的析构,以及一些函数(调用这个函数的地方很多并且很频繁,不确定调用这个函数的堆栈)的调用,当我们去查找相应功能的代码问题时,如果简单的通过断点不好查找,就可以使用这个办法。

所以我们使用gcc的编译特性使用__builtin_return_address(level)打印出一个函数的堆栈地址。其中level代表是堆栈中第几层调用地址,__builtin_return_address(0)表示第一层调用地址,即当前函数,__builtin_return_address(1)表示第二层。如代码

#define __built_in_return_address(x) t(x)

void f()

{

     print("%p,%p" , t(0), t(1));

}

void g()

{

      f();

}

分别打印出函数f()和g() 的函数地址,我们通过objdump 出来的文件去查找打印出来的函数地址,这样就能看到调用的函数名了。


相关文章推荐

GCC内建函数 __builtin_return_address实现

GCC内建函数 __builtin_return_address实现 内建函数 __builtin_return_address 返回当前函数或其调用者的返回地址,参数 LEVEL 指定在栈上搜索...
  • dayancn
  • dayancn
  • 2015年09月05日 11:31
  • 883

用__builtin_return_address获得程序运行栈情况

#include #include #include #define MAX_LEVEL 4 void sigfunc(int signo) { printf("%s(0): %p\n...
  • vpwork
  • vpwork
  • 2012年06月20日 16:03
  • 2100

使用__builtin_return_address获得程序运行栈情况

1、gcc默认不支持__builtin_return_address(LEVEL)的参数为非0。好像只支持参数为0。 2、__builtin_return_address(0)的含义是,得到当前函数...

__builtin_return_address/_RET_IP_/_THIS_IP_

GCC内建函数 __builtin_return_address http://www.360doc.com/content/12/0828/17/9336047_232846513.shtml ...

取得函数调用栈 - __builtin_frame_address

取得函数调用栈 - __builtin_frame_address (2007-08-08 13:39) 分类: 库,内存,性能,系统 GCC提供了两个内置函数用来在运行时取得函数调用栈中...

C语言之memchr函数

【FROM MSDN && 百科】 原型:  const void * memchr ( const void * ptr, int value, size_t num );         ...

安卓逆向学习笔记(2)- 利用apktool反编译apk并进行二次打包

这篇文章将介绍一个apk反编译工具apktool。我们可以用apktool反编译apk,并且可以对反编译得到的文件重新打包生成新的apk。 本文使用的apktool版本为v2.0.0RC3,待反编译...

__builtin_return_address(LEVEL)

__builtin_return_address(LEVEL) 看Linux内核代码过程中,看到一个有意思的: mm/vmalloc.c中 struct vm_struct *get...
  • dayancn
  • dayancn
  • 2014年02月02日 11:26
  • 630

ASMB的BUG(ORA-04030 kfmditer)导致数据库宕机

ASMB的BUG(ORA-04030 kfmditer)导致数据库宕机 现象: 客户的一个重要生产系统RAC的实例1宕机,查看alert日志: Fri Jun 21 17:05:52 2013 Er...

Oracle BUG导致实例宕机:ORA-07445

现象: 客户的数据库(RAC环境:11.1.0.6)发生了实例异常宕机现象,伴随有ORA-07445错误: Sun Jun 23 01:00:06 2013 Exception [type: S...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用__builtin_return_address(level)和objdump查找bug和宕机
举报原因:
原因补充:

(最多只允许输入30个字)