2016-01-11 109 views
0

我有一個在Ubuntu中運行的C++應用程序。我想要做的是去掉其符號的應用程序二進制文件,以使它們不是二進制文件的一部分,但是使用addr2line實用程序通過引用符號文件而不是二進制文件的一部分符號來獲取回溯信息。這可能嗎?如何在Ubuntu中提供帶有符號文件的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

您可以使用帶有addr2line的未剝離二進制文件,其中的地址是運行剝離二進制文件的地址。 該地址與.text段落的開始相關,在剝離和未剝離二進制文件中相同。

相關問題