簡體   English   中英

如何在Visual Studio(而不是MSIL)中查看C#的匯編代碼?

[英]How to view the Assembly code for C# in Visual Studio (not the MSIL)?

此視頻中 (8:20)顯示C#代碼的匯編代碼。 它沒有告訴如何顯示它(我聽到的只是按F11,但它對我不起作用),也許它不適用於Visual Studio的Express版本?

所有這些答案都存在問題。

如果您的MSVC版本支持它,您確實可以在Debug / Disassembly窗口中看到匯編程序指令(僅在主動調試應用程序時可用)。

但是,jit編譯器會檢測您何時嘗試在調試器下運行它。 因此,即使您正在進行發布版本,它仍然與您從命令行運行的發布版本完全相同。

從好的方面來說,調試會更容易。 從負面來看,它使.Net編譯器看起來非常糟糕,因為代碼不像“真實”運行時那樣高效。

有一個技巧我用來看'真正的'匯編程序輸出。 在MSVC中,使用CTRL-F5(無需調試啟動)啟動應用程序。 然后使用Debug / Attach to Process來...嗯...附加到進程。

您現在可以使用調試器中斷該過程並檢查“真實”asm輸出。 實際調試將更加困難,因為代碼已經進行了更多優化,但是反匯編窗口將讓您更好地了解jit編譯器的工作情況。

我確定有一種方法可以用NGEN做這個(也許這個 ?),但只是附加對我來說效果很好。

在菜單中選擇Debug - Windows - Assembly。 如果Express Edition中沒有該菜單,那么是的,它不受支持。

您正在尋找的窗口是Debug - > Windows - > Disassembly

你必須調試它才能存在,並且在連接調試器時你可以按Ctrl + Alt + D來實現它。

您無法在任何其他時間查看匯編代碼(機器代碼),因為它不存在。 它作為機器代碼存在的唯一時間是加載和運行時。 .Net不編譯為機器代碼,它編譯為MSIL,因此必須在它出現之前進行JIT編譯(及時)。 只有在它運行時才會發生。

如此處所述您應該運行代碼並在斷點處停止然后調試 - > Windows - >反匯編或Ctrl + Alt + D


如果不存在,則應打開選項Dialog並將Address-leve debugging設置為啟用 在這里

暫無
暫無

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

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