![](/img/trans.png)
[英]How to make objdump show assembly of sections only appeared in source code?
[英]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 sourcefile
或gcc -gdwarf-2 sourcefile
)通過處理這個DWARF信息, objdump
能夠得到@ vlcekmi3和@vkrnt的源代碼
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.