有没有一个库调用addr2line?[已关闭]

问题描述 投票:21回答:2

我需要从C++程序中获取addr2line提供的信息(从回溯一个函数调用的文件和行)。有没有类似addr2line的库调用?

编辑:我是在Linux环境下工作的。 我是在Linux环境下工作的。

我知道我可以直接调用addr2line,我也知道我可以使用 源码 的 addr2line (这也是 GPL 授权的)。但我想,如果有一个库函数的话,调用它是比较干净的。

编辑:我将使用binutils的bfd,就像addr2line一样。 我将使用binutils的bfd,就像addr2line一样。bfd到底是什么意思?

c++ c linux backtrace addr2line
2个回答
6
投票

你可以试试函数 dladdr(). 它使用的是程序的动态符号,而不是调试信息(编译程序时使用的是 gcc -rdynamic).

此外,您还可以查看 回溯 库,或更高层次的 堆栈追踪 库。不完全是你所问的,但它们可能证明是有用的。


6
投票

检查一下addr2line的bsd实现的源代码,它只有大约400行代码。把源码改成一个库函数应该是很容易的。http:/sourceforge.netpelftoolchaincodeHEADtreetrunkaddr2lineaddr2line.c。

© www.soinside.com 2019 - 2024. All rights reserved.