如何获取C函数指针的函数名称

ter*_*nus 7 c linux elf dwarf

我有以下问题:当我使用backtrace(3)函数在C中获得回溯时,返回的符号可以使用dwarf库和dladdr(3)轻松确定函数的名称.

问题是,如果我有一个简单的函数指针(例如通过传递它和函数),dladdr + dwarf函数就无济于事.似乎指针与backtrace(3)返回的指针不同(这并不奇怪,因为回溯直接从堆栈中获取这些函数指针).

我的问题是,是否有一些解决这些名称的方法?另外,我想确切地知道两个指针之间的区别.

谢谢!

更新:

指针之间的区别是非常重要的:
我得到的回溯是:0x8048ca4
直接指针版本:0x3ba838

在我看来,第二个需要一个偏移量.

Joh*_*ams 0

addr2line(1) 可能正是您正在寻找的东西。