共用方式為


在 Visual Studio 調試程式中檢視反組譯碼程式代碼(C#、C++、Visual Basic、F#)

反組譯 視窗顯示與編譯器建立指令對應的組合語言代碼。 如果您要偵錯受控代碼,這些組件指令會對應至即時 (Just-In-Time, JIT) 編譯程式所建立的本機代碼,而不是由 Visual Studio 編譯程式所建立的 Microsoft 中繼語言 (MSIL)。

備註

若要充分利用 反組譯 碼視窗,請瞭解或了解 彙編語言程序設計的基本概念。 Intel 指令集的參考數據可在 架構手冊的第 2 卷中找到。 此材料通常也適用於 AMD 指令集。

只有在啟用位址層級偵錯時,才能使用此功能。 它不適用於文稿或 SQL 偵錯。

除了元件指示之外, 反組譯 碼視窗還可以顯示下列選擇性資訊:

  • 每個指示所在的記憶體位址。 針對原生應用程式,它是實際的記憶體位址。 針對 Visual Basic 或 C#,它表示從函式開頭的偏移量。

  • 衍生自組合程式碼的原始程式碼。

  • 程式碼位元組,也就是實際機器指令或 MSIL 指令的位元組表示。

  • 記憶體位址的符號名稱。

  • 對應原始程式碼的行數。

組合語言指令是由 助記符所組成,這些是指令名稱的縮寫,以及變數、暫存器和常數的 符號 。 每一個機器語言指令碼都會以一個組合語言助記符來表示,然後可以選擇性地接著一個或多個符號。

組合語言代碼主要依賴於處理器暫存器,而針對 Managed 程式代碼,則依賴於 Common Language Runtime 暫存器。 您可以使用 [反組譯碼] 視窗和 [暫存器] 視窗,檢查暫存器內容。

若要以原始數值形式檢視機器碼指令,而不是以彙編語言的形式,請使用 [記憶體] 視窗,或從 [反組譯碼] 視窗中的快捷方式功能表中選取 [程序代碼位元組]。

使用拆解視窗

若要啟用 反組譯視窗,請在 [工具>選項>偵錯] 底下,選取 [啟用位址層級偵錯]。

若要在偵錯期間開啟反組譯碼視窗,請選取> [偵錯Windows>反組譯碼] 或按 Ctrl + Alt + D

備註

您看到的對話方塊和功能表命令可能會因為您目前的設定或版本不同,而與本文中描述的有所不同。 若要變更您的設定,請選擇 [[工具] 功能表上的 [匯入和導出設定]。 如需詳細資訊,請參閱 重設所有設定

若要開啟或關閉選擇性資訊,請在 [ 反組譯 碼] 視窗中按下滑鼠右鍵,然後在快捷方式功能表中設定或清除所需的選項。

左邊界的黃色箭號會標示目前的執行點。 針對機器碼,執行點會對應至CPU的程式計數器。 這個位置會顯示將在程序中執行的下一個指令。

記憶體中的向上或向下頁面

當您在 記憶體 視窗或 反組譯 碼視窗中檢視記憶體內容時,您可以使用垂直滾動條在記憶體空間中向上或向下移動。

  1. 若要向下頁面(移至較高的記憶體位址),請按兩下滾動盒下方的垂直滾動條。

  2. 若要向上分頁(移至較低的記憶體位址),請按下拇指上方的垂直滾動條。

    您也會注意到垂直滾動條會以非標準方式運作。 新式計算機的位址空間非常大,藉由抓取滾動條拇指並將它拖曳到隨機位置,很容易迷失。 因此,拇指是「springloaded」,且一律會保留在滾動條的中心。 在原生程式代碼應用程式中,您可以向上或向下分頁,但無法自由捲動。

    在受控應用程式中,反組譯只限於一個功能,並且您可以正常捲動。

    您會發現較高的位址會出現在視窗底部。 若要檢視較高的位址,您必須向下移動,而不是向上移動。

向上或向下移動一個指令

  • 點擊垂直滾動條頂端或底部的箭頭。