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

时间:2013-04-05 02:31:42

标签: 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]

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找dladdr功能。