是否有對二進制源文件的引用?我試圖在二進制文件上運行字符串,並找不到任何對所列源文件的引用...objdump如何使用-S選項管理顯示源代碼?
回答
objdump
使用DWARF調試信息編譯到引用源文件名的二進制文件中。如果二進制文件不是用調試信息編譯的,或者objdump
找不到源文件,那麼您的輸出組件中沒有源代碼。
當您在二進制文件上使用strings
時,您看不到源文件名,因爲DWARF使用壓縮。
二進制文件中的矮小信息存儲指令(指令指針或IP實際)與源文件和行號之間的映射關係。源文件是使用完整路徑指定的,因此即使二進制文件被移動,也可以找到它。要查看此信息,您可以使用objdump --dwarf=decodedline <binary>
(課程的二進制文件必須編譯爲-g
)。
一旦你說objdump -S <binary>
它使用這個矮人信息給你的源代碼以及反彙編。
也許你應該提供一個生動的例子。我無法'objdump'提供交錯的源代碼行號的反彙編。 – jww 2017-09-01 21:08:41
我的理解是,要從objdump
顯示二進制代碼的源代碼,有一個前提條件:DWARF調試信息必須編譯到二進制文件中。 (由gcc -g sourcefile
或gcc -gdwarf-2 sourcefile
) 而通過處理此DWARF信息objdump
能夠獲得源代碼@ vlcekmi3和@vkrnt回答
你是說我們必須在啓用矮小調試的情況下進行編譯,然後使用'objdump'(有一些未知選項)來顯示與反彙編交錯的源代碼?你能提供實際的步驟與實際的命令? – jww 2017-09-01 21:05:39
- 1. objdump的-S不顯示Linux內核模塊的源代碼清單
- 2. 哪個源代碼管理使用「s」。其文件名前綴?
- 3. VS2015只提供上次使用的源代碼管理選項
- 4. 如何使objdump只顯示源代碼中出現的部分程序集?
- 5. 如何配置SSIS項目以使用Subversion源代碼管理?
- 6. 現有開源項目實施的源代碼管理/管理
- 7. 源代碼管理
- 8. 源代碼管理
- 9. TFS 2012源代碼管理資源管理器僅顯示我的支票
- 10. 託管源代碼管理?
- 11. 如何管理源代碼管理中的常見源文件?
- 12. 跨源代碼庫和解決方案使用源代碼管理項目
- 13. 爲什麼不使用Git源控制顯示在源代碼控制管理
- 14. 多個項目的源代碼管理
- 15. 如何在現有iOS項目中啓用源代碼管理?
- 16. 如何管理SQL源代碼?
- 17. 使用Visual Studio管理源代碼管理中的引用
- 18. 源代碼管理管理器後端
- 19. Objdump反彙編不匹配源代碼
- 20. 自我管理項目的源代碼管理
- 21. 使用源代碼管理設置新的EPiServer 6項目
- 22. 該項目已在選定位置的源代碼管理下
- 23. 使用SVN的項目代碼管理
- 24. 實施源代碼管理
- 25. 執行源代碼管理
- 26. 源代碼管理佈局
- 27. 如何將源代碼管理添加到現有項目
- 28. 如何重置凌亂項目的源代碼管理?
- 29. RTC源代碼管理如何跟蹤項目?
- 30. Subversion的AnkhSVN不顯示源代碼管理相關圖標
好問題,可憐的答案(至今)。另請參閱[如何使用GCC獲取與彙編輸出內聯的源代碼行](https://stackoverflow.com/q/2412816/608639) – jww 2017-09-01 21:09:21