2010-12-17 27 views
0

我正在創建一個實用程序來讀取我公司編寫的VB .NET可執行文件的源代碼行。.NET的Ildasm.exe工具似乎不會將所有源代碼行輸出到輸出文件

程序Ildasm.exe/NOBAR/UNICODE/SOURCE 「AssemblyToRead.exe」 /OUT="App_Dir\CodeOutput\CodeOutput.txt」

這導致:它以下列方式使用程序Ildasm.exe實用一些源代碼行被轉儲到CodeOutput.txt文件中。但是,似乎他們的源代碼行在每個源文件的開頭都缺失。源文件丟失前10到20行代碼並不罕見。大多數其他線似乎是忠實的生產。 有沒有人有任何想法我做錯了什麼? 謝謝

回答

0

在可執行文件中沒有源代碼行,所以反彙編程序無法從它讀取源代碼行。它所做的是創建可編譯爲相同可執行文件的代碼。

任何不生成可執行代碼的源代碼行都不會被重新創建。另外,有些代碼已經過優化,所以如果一行代碼沒有做任何有用的事情,它可能已經在編譯中被刪除了。

+0

儘管這是正確的,但它可能有助於理解是否嘗試將VS.NET中的斷點添加到不可執行位置處的正在運行的程序並查看會發生什麼。 ;-) – Lucero 2010-12-17 22:22:30

+0

@Lucero:實際上,這與編譯器在調試模式下如何確保可執行代碼按照源代碼中的相同順序執行所有操作有關,並且每個源代碼行都有可執行代碼(由需要時添加NOP操作)。 – Guffa 2010-12-17 23:32:09

+0

謝謝Guffa。這正是我需要知道的。 – lamberms 2010-12-18 03:57:05

相關問題