代码调试手段之__builtin_return_address

如何知道某个函数被是被谁调用的?

Linux 内核:可通过dump_stack()分析

dump_stack()使用方法_yanlaifan的博客-CSDN博客_dump_stack

linux内核中打印栈回溯信息 - dump_stack()函数分析_落尘纷扰的博客-CSDN博客_dump_stack

应用程序:使用 __builtin_frame_address()、__builtin_return_address()分析

__builtin_return_address(LEVEL)函数解释和运行实战_小可爱amour的博客-CSDN博客___builtin_return_address

通过__builtin_return_address()获取函数地址后,再到到函数表中根据函数地址查找到对应的函数名即可,两种方式

1. gdb方式查找函数表( gdb 根据函数地址 找 对应的函数名 - 知乎gdb查看内存地址和栈中的值—查看虚函数表、函数地址_ztguang的博客-CSDN博客_gdb查看内存地址和栈中的值 )

(gdb) info symbol 0x9e250   //通过地址查找函数名

(gdb) info address func_name       //通过函数名查找地址

2.readelf 命令方式查看函数表

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值