簡體   English   中英

objdump如何設法使用-S選項顯示源代碼?

[英]How does objdump manage to display source code with the -S option?

二進制文件中是否有對源文件的引用? 我嘗試在二進制文件上運行字符串,但找不到對列出的源文件的任何引用...

objdump使用編譯成二進制文件的DWARF調試信息,它引用源文件名。 如果二進制文件沒有使用調試信息編譯,或者objdump無法找到源文件,那么您的輸出中只會得到源代碼 - 僅匯編。

在二進制文件上使用strings時,您看不到源文件名,因為DWARF使用壓縮。

二進制中的矮化信息存儲指令(實際上是指令指針或IP)與源文件和行號之間的映射。 源文件使用完整路徑指定,因此即使二進制文件被移動也可以找到它。 要查看此信息,您可以使用objdump --dwarf=decodedline <binary> (二進制文件必須使用-g編譯)。

一旦你說objdump -S <binary>就會使用這個矮人信息來提供源代碼以及反匯編。

我的理解是,對於從二進制代碼顯示源代碼的objdump ,有一個前提條件:DWARF調試信息必須編譯成二進制文件。 (通過gcc -g sourcefilegcc -gdwarf-2 sourcefile )通過處理這個DWARF信息, objdump能夠得到@ vlcekmi3和@vkrnt的源代碼

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM