使用 libunwind 获取模块地址

Getting module addresses with libunwind

本文关键字:地址 模块 获取 libunwind 使用      更新时间:2023-10-16

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

unw_get_reg ( &cursor, UNW_REG_IP, &ip );

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

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

问候

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