使用__builtin_return_address(level)和objdump查找bug和宕机
来源:互联网 发布:网络编程入门书籍 编辑:程序博客网 时间:2024/05/16 17:22
有些时候我们很难知道问题出在哪里,特别是类的析构,以及一些函数(调用这个函数的地方很多并且很频繁,不确定调用这个函数的堆栈)的调用,当我们去查找相应功能的代码问题时,如果简单的通过断点不好查找,就可以使用这个办法。
所以我们使用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 出来的文件去查找打印出来的函数地址,这样就能看到调用的函数名了。
- 使用__builtin_return_address(level)和objdump查找bug和宕机
- __builtin_return_address(LEVEL)
- __builtin_return_address(LEVEL)
- objcopy和objdump使用教程
- __builtin_return_address(LEVEL)函数解释
- __builtin_return_address(LEVEL)函数解释
- 简单说明ioremap 和 objdump的使用
- objdump和addr2line 使用的例子
- 对比objdump和readelf
- readelf 和 objdump 的区别
- objdump使用
- objdump使用
- objdump使用
- 关于objdump和objcopy的研究
- 利用backtrace和objdump进行代码分析
- mac下的readelf和objdump
- 目标文件解析命令:objdump和readelf
- 使用objdump查看动态库和静态库中具有哪些函数
- 第六周任务二
- 实验报告2
- C/C++语言中struct的深入探讨
- JqueryUI datepicker(日历)插件的from to的一个小实例
- 一点笔记
- 使用__builtin_return_address(level)和objdump查找bug和宕机
- 手把手教你画饼状图C#
- C语言的动态内存分配
- 【burnside & polya】hnoi2008 cards hnoi2009 count
- C语言中sizeof用法总结
- 白皮书&&cantor的数表
- 给自己的程序添加信号量(程序)
- java第二日
- C语言中联合体union的使用