0

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

unw_get_reg ( &cursor, UNW_REG_IP, &ip );

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

当时另一个线程没有收到答案。你知道如何获得这些信息吗?

问候

4

1 回答 1

0

假设静态地址是指从函数所在模块的开头偏移,您可以使用dladdr(ip, info)whereinfo.dli_fbase为您提供加载模块的基地址。然后(pc - info.dli_fbase)给你这个函数从模块开始的偏移量。

于 2020-01-26T12:18:31.283 回答