我使用libunwind从堆栈帧中提取指令指针,如下所示:
unw_get_reg ( &cursor, UNW_REG_IP, &ip );
但是,这仅给了我函数指针的动态地址。我想在模块中接收静态地址,以便可以通过addr2line查询它们。
当时不同的线程没有收到答案。您知道如何获取此信息吗?
致谢
答案 0 :(得分:0)
假设通过静态地址表示从该函数所在模块的起始位置开始的偏移量,则可以使用dladdr(ip, info)
,其中info.dli_fbase
为您提供该地址的基地址。已加载的模块。然后(pc - info.dli_fbase)
为您提供此功能与模块开头的偏移量。