是否有对addr2line的库调用?

ste*_*fen 20 c c++ linux backtrace addr2line

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

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

我知道我可以直接调用addr2line,我知道我可以在我的程序中使用addr2line 的源代码(也是GPL许可).但我想调用库函数(如果存在)更清晰.

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

rod*_*igo 7

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

此外,您还可以检查回溯库或更高级别的堆栈跟踪库.
不完全是你问的问题,但它们可能证明是有用的.


use*_*983 5

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

  • 更新的链接:http://sourceforge.net/p/elftoolchain/code/HEAD/tree/trunk/addr2line/addr2line.c (2认同)