我有以下问题:当我在 C 中使用 backtrace(3) 函数获得回溯时,返回函数名称的符号很容易通过 dwarf 库和 dladdr(3) 确定。
问题是,如果我有一个简单的函数指针(例如通过传递它&function),dladdr + dwarf 函数将无济于事。似乎指针与 backtrace(3) 返回的指针不同(这并不奇怪,因为 backtrace 直接从堆栈中获取这些函数指针)。
我的问题是是否也有一些方法可以解决这些名称?另外,我想确切地知道这两个指针之间有什么区别。
谢谢!
更新:
指针之间的区别非常显着:
我用回溯得到的是:0x8048ca4
直接指针版本:0x3ba838
在我看来,第二个需要一个偏移量。