反組譯 視窗顯示與編譯器建立指令對應的組合語言代碼。 如果您要偵錯受控代碼,這些組件指令會對應至即時 (Just-In-Time, JIT) 編譯程式所建立的本機代碼,而不是由 Visual Studio 編譯程式所建立的 Microsoft 中繼語言 (MSIL)。
只有在啟用位址層級偵錯時,才能使用此功能。 它不適用於文稿或 SQL 偵錯。
除了元件指示之外, 反組譯 碼視窗還可以顯示下列選擇性資訊:
每個指示所在的記憶體位址。 針對原生應用程式,它是實際的記憶體位址。 針對 Visual Basic 或 C#,它表示從函式開頭的偏移量。
衍生自組合程式碼的原始程式碼。
程式碼位元組,或實際機器或 MSIL 指令的位元組表示法。
記憶體位址的符號名稱。
對應原始程式碼的行數。
組合語言指令是由 助記符所組成,這些是指令名稱的縮寫,以及變數、暫存器和常數的 符號 。 每一個機器語言指令碼都會以一個組合語言助記符來表示,然後可以選擇性地接著一個或多個符號。
組合語言代碼主要依賴於處理器暫存器,而針對 Managed 程式代碼,則依賴於 Common Language Runtime 暫存器。 您可以使用 [反組譯碼] 視窗和 [暫存器] 視窗,檢查暫存器內容。
若要以原始數值形式檢視機器碼指令,而不是以彙編語言的形式,請使用 [記憶體] 視窗,或從 [反組譯碼] 視窗中的快捷方式功能表中選取 [程序代碼位元組]。
使用拆解視窗
若要啟用 「反組譯 」視窗,請開啟「 工具>選項」 窗格。 展開 [所有設定>偵錯>一般] 區段,然後選取 [啟用位址層級偵錯] 核取方塊。
若要啟用 「拆解」 視窗,請開啟「 工具>選項」 對話方塊。 展開 [偵錯>一般 ] 區段,然後選取 [啟用位址層級偵錯] 核取方塊。
若要在偵錯期間開啟反組譯碼視窗,請選取> [偵錯Windows>反組譯碼] 或按 Ctrl + Alt + D。
備註
您看到的對話方塊和功能表命令可能與本文所述的 UI 不同,視您的使用中設定或版本而定。 若要變更您的設定,請選擇 [[工具] 功能表上的 [匯入和導出設定]。 如需詳細資訊,請參閱 重設所有設定。
若要開啟或關閉選擇性資訊,請在 [ 反組譯 碼] 視窗中按下滑鼠右鍵,然後在快捷方式功能表中設定或清除所需的選項。
左邊界的黃色箭號會標示目前的執行點。 針對機器碼,執行點會對應至CPU的程式計數器。 這個位置會顯示將在程序中執行的下一個指令。
記憶體中的向上或向下頁面
當您在 記憶體 視窗或 反組譯 碼視窗中檢視記憶體內容時,您可以使用垂直滾動條在記憶體空間中向上或向下移動。
若要向下翻頁(移至較高的記憶體位址),請選取捲動方塊下方的垂直捲軸。
若要向上翻頁 (移至較低的記憶體位址),請選取拇指上方的垂直捲軸。
請注意,垂直捲軸會以非標準方式運作。 現代計算機的地址空間很大。 如果您抓住滾動條拇指並將其拖動到隨機位置,則很容易丟失上下文。 因此,拇指具有“彈簧機制”並始終位於滾動條的中央。 在原生程式代碼應用程式中,您可以向上或向下分頁,但無法自由捲動。
在受控應用程式中,反組譯只限於一個功能,並且您可以正常捲動。
請注意,較高的位址會顯示在視窗底部。 若要檢視較高的位址,您必須向下移動,而不是向上移動。
向上或向下移動一個指令
- 選取垂直捲軸頂端或底部的箭頭。