我有一个在 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/