首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何访问C++程序中的‘addr2line’功能?

如何访问C++程序中的‘addr2line’功能?
EN

Stack Overflow用户
提问于 2012-07-19 07:58:06
回答 2查看 10.5K关注 0票数 24

我需要从一个addr2line程序中获取由C++程序提供的信息(源文件和从回溯函数调用中返回的行)。

我知道我可以直接调用addr2line作为子进程,我知道我可以将addr2line的源代码复制到我的程序中(这也是GPL许可的)。但是代码看起来很复杂,我不太习惯直接使用它。bfd到底是什么意思?我更喜欢在C++ STL库中使用一些函数,因为这样会更干净。

我在Linux环境中工作。

EN

回答 2

Stack Overflow用户

发布于 2012-07-19 08:23:13

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

此外,您还可以检查回溯库或更高级别的栈迹库。

不完全是你要求的,但它们可能被证明是有用的。

票数 7
EN

Stack Overflow用户

发布于 2013-02-28 07:18:12

查看addr2line的源代码实现,它只有大约400行代码。将源代码更改为库函数应该非常容易。http://sourceforge.net/p/elftoolchain/code/HEAD/tree/trunk/addr2line/addr2line.c

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11556321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档