2017-03-12 29 views
3

如何知道鏈接到二進制可執行文件的調試符號文件的名稱和/或路徑?如何知道鏈接到二進制可執行文件的調試符號文件的名稱和/或路徑?

假設你做這樣的:

objcopy --only-keep-debug foo foo.dbg 
objcopy --strip-debug foo 
objcopy --add-gnu-debuglink=foo.dbg foo 

現在foo.dbg有調試符號,富只需foo.dbg是GDB可以使用鏈接。 由於gdb可以從foo知道符號文件,我們怎麼能知道它沒有真正運行gdb?

我觀察到,即使我將可執行文件從foo重命名爲xyz,gdb仍會從foo.dbg加載符號,因此它不像binaryname.extension, ,擴展名也是可選的。

回答

2

在沒有真正運行gdb的情況下,我們怎麼能知道呢?

這些命令會告訴你:

readelf -x.gnu_debuglink foo 
objdump -sj.gnu_debuglink foo 

objcopy --add-gnu-debuglink只是增加了.gnu_debuglink部分包含給定路徑,調試文件的校驗和。

更多信息here

+0

非常感謝你! – Sumit

+0

您能否告訴我使用什麼校驗和技術?我的意思是說MD5或SHA是什麼,以便我可以比較並確保我擁有正確的調試信息文件。 – Sumit

+0

@Sumit這是CRC32。文檔在這裏:https://sourceware.org/gdb/onlinedocs/gdb/Separate-Debug-Files.html –

相關問題