我正在使用 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]