使用libunwind获取模块地址

时间:2019-05-29 13:34:52

标签: c++ libunwind

我使用libunwind从堆栈帧中提取指令指针,如下所示:

unw_get_reg ( &cursor, UNW_REG_IP, &ip );

但是,这仅给了我函数指针的动态地址。我想在模块中接收静态地址,以便可以通过addr2line查询它们。

当时不同的线程没有收到答案。您知道如何获取此信息吗?

致谢

1 个答案:

答案 0 :(得分:0)

假设通过静态地址表示从该函数所在模块的起始位置开始的偏移量,则可以使用dladdr(ip, info),其中info.dli_fbase为您提供该地址的基地址。已加载的模块。然后(pc - info.dli_fbase)为您提供此功能与模块开头的偏移量。