我在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的剥离二进制文件
话虽如此,我原来的问题仍然存在。有什么想法吗?
答案 0 :(得分:0)
你可以使用带有addr2line的unstripped二进制文件和运行剥离二进制文件的地址。 该地址相对于.text段的开头,在剥离和未剥离的二进制文件中都是相同的。