ubuntu - 我怎样才能为 addr2line 提供一个符号文件,以便在 Ubuntu 中与剥离的二进制文件一起使用?

标签 ubuntu build addr2line

我有一个在 Ubuntu 中运行的 C++ 应用程序。我想要做的是去除其符号的应用程序二进制文件,使它们不属于二进制文件的一部分,但使用 addr2line 实用程序通过引用符号文件而不是二进制文件中的符号来获取回溯信息.这可能吗?

到目前为止,我最接近的是使用以下方法生成一个符号文件:

strip MyBinary -o thesymbols.sym

然后我尝试将该文件与 addr2line 实用程序一起使用,如下所示:

addr2line 0x779e81 -b thesymbols.sym

但这会产生提示:

addr2line: 'a.out': No such file

然后我尝试了:

addr2line 0x779e81 -e MyBinary -b thesymbols.sym

但这会产生提示:

addr2line: MyBinary: Invalid bfd target

有人可以引导我朝着正确的方向前进吗?我做错了什么?

在此先感谢您的帮助!

编辑:

我现在意识到,当我认为我正在创建一个仅包含以下符号信息的文件时:

strip MyBinary -o thesymbols.sym

我实际上只是在创建一个名为 thesymbols.sym 的剥离二进制文件

话虽如此,我原来的问题仍然存在。有什么想法吗?

最佳答案

您可以将未剥离的二进制文件与 addr2line 一起使用,其中包含运行剥离二进制文件的地址。 该地址相对于 .text 部分的开头,在剥离和未剥离的二进制文件中都是相同的。

关于ubuntu - 我怎样才能为 addr2line 提供一个符号文件,以便在 Ubuntu 中与剥离的二进制文件一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34729550/

相关文章:

qt - 可执行文件从终端运行,但在应用程序中失败

python - 在 ubuntu/apache2 : virtual host configuration 上部署 flask 应用程序

ubuntu - Django 说所有图像无效,但 PIL 有效

不包含 C++ 头文件 - 适用于 Linux 的 C++ 示例应用程序

c++ - 使用 C++ STL 理解 addr2line 消息

docker - 无根模式 Docker 守护程序在重新登录 (SSH) 后未运行

build - 什么是好的 RPM 构建工具?

build - 在 OpenEmbedded 中选择内核版本

android - 我如何为 Android 使用 addr2line?

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