c++ - 如何在我的 C++ 程序中访问 `addr2line` 功能?

标签 c++ c linux backtrace addr2line

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

我知道我可以直接调用 addr2line 作为子进程,我知道我可以复制 the source code of addr2line进入我的程序(这也是 GPL 许可的)。但是代码看起来很复杂,直接使用我感觉不舒服。 bfd 到底是什么意思?我更喜欢使用 C++ STL 库中的一些函数,因为这样会更简洁。

我在 Linux 环境中工作。

最佳答案

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

另外,您可以查看backtrace库或更高级别 stacktrace图书馆。
不完全是您的要求,但它们可能会很有用。

关于c++ - 如何在我的 C++ 程序中访问 `addr2line` 功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11556321/

相关文章:

c++ - 3D 线段和平面相交 - 续

c - 不明白这个语法

python - 导入错误 : No module named dns. 消息

linux - 将输出存储在变量中并在命令中使用变量

c++ - 不能在 std::array 上使用 std::apply

c++ - GMock 删除使用 ReturnArg 时的隐式转换警告

c - 在树莓派中使用 c/c++ 和 i2c 从特定寄存器 (fifo) 读取数据 block

c - 使用出租车几何的距离 : weird output

linux - Ansible:如何使用 shell 处理引号和空格

c++ - eclipse c++ 一次从构建中排除多个文件?