是否有对addr2line的库调用?

时间:2012-07-19 07:58:06

标签: c++ c linux backtrace addr2line

我需要从C ++程序中获取addr2line提供的信息(来自回溯函数调用的文件和行)。是否存在类似于addr2line的库调用?

编辑:我在Linux环境中工作。

我知道我可以直接调用addr2line,我知道我可以在我的程序中使用addr2line的source code(这也是GPL许可)。但我想调用库函数(如果存在的话)更清晰。

编辑我将使用binutils的bfd,就像addr2line一样。无论如何,bfd意味着什么?

2 个答案:

答案 0 :(得分:7)

您可以尝试使用dladdr()功能。它使用程序的动态符号,而不是调试信息(用gcc -rdynamic编译程序。)

另外,您可以查看backtrace库或更高级stacktrace库 不完全是你问的问题,但它们可能证明是有用的。

答案 1 :(得分:4)

检查addr2line的bsd实现的源代码,它只有大约400行代码。将源代码更改为库函数应该非常容易。 http://sourceforge.net/apps/trac/elftoolchain/browser/trunk/addr2line/addr2line.c