c - 如何根据库中的地址查找函数名称

标签 c

我正在使用 backtrace_symbols() 从我的 C 代码中打印堆栈(遵循 http://www.gnu.org/software/libc/manual/html_node/Backtraces.html 上的说明)。但是,即使我使用 -g -rdynamic 构建了库,我也只能获取动态库中堆栈帧的地址。

现在,我有了正在运行的进程,也有了库,我如何找出每个帧地址对应哪个方法?预先感谢您。

这是在 64 位 Linux 上。

我的打印输出示例如下所示:

Obtained 9 stack frames.
/tmp/libexample.so [0x2aaabaae9771]
/tmp/libexample.so [0x2aaabaae9828]
/tmp/libexample.so [0x2aaabaaa8138]
/tmp/libexample.so [0x2aaabaab2402]
/tmp/libexample.so [0x2aaabaabd029]
/tmp/libexample.so [0x2aaabaa1e23a]
/tmp/libexample.so [0x2aaabaa24ded]
/lib64/libpthread.so.0 [0x30b700677d]

最佳答案

我认为您正在寻找 dladdr 函数。

关于c - 如何根据库中的地址查找函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15824932/

相关文章:

c - 函数返回但没有执行我的要求

C++ 变量参数错误

c - 将信息从 UEFI 传递到操作系统

c - 如何使用低级 (C) 接口(interface)将张量保存到 TensorFlow 中的文件?

c - 为什么这个版本的 C 中的逻辑与不显示短路行为?

c - 是否有内联对 C 程序的性能有害的实际示例?

c - C中哈希表的bucket可以存储什么

c - 如何强制 openMP 按特定顺序运行迭代

c - 这个头文件有什么问题?

c - 优雅的错误检查