2

我有一个在 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 的剥离二进制文件

话虽如此,我最初的问题仍然存在。有任何想法吗?

4

1 回答 1

2

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

于 2016-02-17T20:54:20.677 回答