给定一个函数标识符,是否有命令行程序或库函数提供存储在elf文件中的地址

时间:2018-03-25 13:50:50

标签: c linux elf

我正在寻找一个返回函数地址的命令或库函数,与addr2line相反。

目前,我使用以下命令:

readelf -s ./a.out|grep "\<main\>"|uniq
>    451: 000000000001967f   148 FUNC    GLOBAL DEFAULT   14 main

2 个答案:

答案 0 :(得分:1)

你也可以使用gdb,info address打印给定符号的地址,所以这样的东西应该有效:gdb ./a.out -ex 'info address main'

答案 1 :(得分:1)

您可以使用libelf

或者,此question和答案会显示如何执行nm所做的事情。

您可以轻松修改其中的代码以反向:迭代所有符号,直到找到正确的符号名称,然后返回该符号的地址。

如果您需要对多个符号名称执行查找,您当然可以迭代所有符号一次,并构建name - &gt; address地图,因此后续查找速度很快。