共用方式為


在 WinDbg 中檢視和編輯區域變數 (傳統)

在 WinDbg 中,您可以輸入命令、使用 [區域變數] 視窗或使用 [監看式] 視窗來檢視區域變數。

偵錯工具命令視窗

您可以在偵錯工具命令視窗中輸入 dv 命令或 dt 命令,以檢視區域變數和參數。

開啟區域變數視窗

[區域變數] 視窗會顯示目前範圍內所有區域變數的相關資訊。

若要開啟或切換至 [區域變數] 視窗,請在 [WinDbg] 視窗中的 [ 檢視 ] 功能表上,選取 [ 區域變數]。 (您也可以按 ALT+3,或選取工具列上的 [ 區域變數 ] 按鈕。ALT+SHIFT+3 會關閉 [區域變數] 視窗。)

下列螢幕擷取畫面顯示 [區域變數] 視窗的範例。

WinDbg 中 [區域變數] 視窗的螢幕擷取畫面。

[區域變數] 視窗可以包含四個數據行。 [名稱] 和 [] 資料行一律會顯示,而[類型] 和 [位置] 資料行是選擇性的。 若要顯示 [類型 ] 和 [ 位置 ] 資料行,請分別在工具列上選取 [Typecast ] 和 [ 位置 ] 按鈕。

使用區域變數視窗

在 [區域變數] 視窗中,您可以執行下列動作:

  • [ 名稱] 資料 行會顯示每個區域變數的名稱。 如果變數是資料結構,其名稱旁邊會出現一個核取方塊。 若要展開或折迭結構成員的顯示,請選取或清除核取方塊。

  • [ ] 資料行會顯示每個變數的目前值。

    • 若要輸入變數的新值,請按兩下目前的值並輸入新的值,或編輯舊的值。 (剪下、複製和貼上命令可用於 editing.) 您可以輸入任何 C++ 運算式
    • 若要儲存新的值,請按 ENTER 鍵。
    • 若要捨棄新的值,請按 ESC 鍵。
    • 如果您輸入不正確值,當您按下 ENTER 時,舊的值將會重新出現。

    int類型的整數會顯示為十進位值;UINT類型的整數會顯示在目前的弧度中。 若要變更目前的弧度,請使用 [偵錯工具命令] 視窗中 的 n ([設定數位基底) ] 命令。

  • 如果 [區域變數] 視窗中顯示 [類型 ] 資料行 () 顯示每個變數的目前資料類型。 每個變數都會以適合自己的資料類型的格式顯示。 資料結構在其類型 資料行中 具有其類型名稱。 其他變數類型會顯示此資料行中的 「輸入新類型」。

    如果您按兩下 [輸入新類型],您可以輸入新的資料類型來轉換類型。 此轉換只會在 [區域變數] 視窗中改變此變數的目前顯示;它不會變更偵錯工具或目的電腦上的任何專案。 此外,如果您在 [ ] 資料行中輸入新值,您輸入的文字將會根據符號的實際類型進行剖析,而不是您在 [類型 ] 資料行中輸入的任何新類型。 如果您關閉並重新開啟 [區域變數] 視窗,您將失去資料類型變更。

    您也可以在 [類型 ] 資料行中輸入擴充命令。 偵錯工具會將符號的位址傳遞至這個延伸模組,並將產生的輸出顯示在目前資料列下方的一系列可折迭資料列中。 例如,如果此資料列中的符號是執行緒環境區塊的有效位址,您可以在Type資料行中輸入!teb,以在此符號的位址上執行!teb延伸模組。

  • 如果 [區域變數] 視窗中顯示 [ 位置 ] 資料行 () 顯示資料結構中每個成員的位移。

  • 如果區域變數是包含 Vtable 的類別實例, 則 Name 資料行會顯示 Vtable,而且您可以展開 Vtable 以顯示函式指標。 如果 Vtable 包含在指向衍生實作的基類中,則會顯示標記法 _vtcast_Class 表示因為衍生類別而新增的成員。 這些成員會像衍生類別類型一樣展開。

  • 區域內容會決定哪些區域變數集會顯示在 [區域變數] 視窗中。 當本機內容因任何原因而變更時,[區域變數] 視窗會自動更新。 根據預設,本機內容符合程式計數器的目前位置。 如需如何變更本機內容的詳細資訊,請參閱本機內容。

[區域變數] 視窗有一個工具列,其中包含兩個按鈕 (TypecastLocations) ,以及具有其他命令的快捷方式功能表。 若要存取功能表,請選取並按住 (或) 以滑鼠右鍵按一下視窗的標題列,或選取靠近視窗右上角的圖示。 工具列和功能表包含下列按鈕和命令。

  • ([工具列] 和功能表) Typecast 會開啟和關閉 [類型] 資料行的顯示。

  • (工具列和功能表) [位置 ] 會開啟和關閉 [ 位置 ] 資料行的顯示。

  • (功能表只會) 顯示 16 位值,因為 Unicode 會在此視窗中顯示 Unicode 字串。 此命令會開啟和關閉會影響 [區域變數] 視窗、[監看式] 視窗和偵錯工具命令輸出的全域設定。 此命令相當於使用 .enable_unicode (Enable Unicode Display) 命令。

  • (功能表只會) 一律顯示預設弧度中的數位 會導致整數顯示在預設的弧度中,而不是以十進位格式顯示。 此命令會開啟和關閉會影響 [區域變數] 視窗、[監看式] 視窗和偵錯工具命令輸出的全域設定。 此命令相當於使用 .force_radix_output (使用 Radix for Integers) 命令。

    注意預設弧度命令中的 [一律顯示數位] 不會影響長整數。 除非已設定 .enable_long_status ([啟用長整數顯示 ) ] 命令,否則長整數會以十進位格式顯示。 .enable_long_status命令會影響 [區域變數] 視窗、[監看式] 視窗和偵錯工具命令輸出中的顯示;[區域變數] 視窗中的功能表中沒有這個命令的對等專案。

  • (功能表只會) 選取值的 [開啟記憶體] 視窗 會開啟新的固定記憶體視窗,以顯示從所選運算式位址開始的記憶體。

  • (功能表只會) 針對選取的記憶體值叫用 dt ,會執行 dt (顯示類型) 命令,並將選取的符號作為其參數。 結果會出現在 [偵錯工具命令] 視窗中。 -n選項會自動用來區分符號與十六進位位址。 未使用其他選項。 請注意,使用此功能表選取專案所產生的內容與從命令列執行 dt 命令時所產生的內容相同,但格式稍有不同。

  • ([功能表]) [工具列 ] 會開啟和關閉工具列。

  • (功能表只會) Dock 或Undock導致視窗進入或離開停狀態。

  • (功能表) [移至新停駐 ] 會關閉 [區域變數] 視窗,並在新的擴充座中開啟它。

  • ([功能表]) [區域變數] 視窗類型無法使用 [ 設定為索引標籤停駐目標 ]。 此選項僅適用于 [來源] 或 [記憶體] 視窗。

  • (功能表只會) 一律浮動 ,即使視窗拖曳到停駐位置,視窗仍會保持無模擬狀態。

  • (功能表只會) 使用框架移動 會導致當 WinDbg 框架移動時移動視窗,即使視窗已取消模擬也一樣。

  • ([功能表]) [ 說明 ] 會在 Windows 偵錯工具檔中開啟本主題。

  • ([功能表]) 關閉 此視窗。

監看式視窗

在 WinDbg 中,您可以使用 [監看式] 視窗來顯示和變更區域變數。 [監看式] 視窗可以顯示您想要的任何變數清單。 這些變數可以包含來自任何函式的全域變數和區域變數。 [監看式] 視窗隨時會顯示符合目前函式範圍之變數的值。 您也可以透過 [監看式] 視窗變更這些變數的值。

不同于 [區域變數] 視窗,[監看式] 視窗不會受到本機內容變更的影響。 只有目前程式計數器範圍內定義的變數可以顯示或修改其值。

若要開啟 [監看式] 視窗,請從 [檢視] 功能表選擇 [監看式]。 您也可以按 ALT+2,或選取工具列上的 [監看式 ] 按鈕。 ALT+SHIFT+2 會關閉 [監看式] 視窗。

下列螢幕擷取畫面顯示 [監看式] 視窗的範例。

WinDbg 中 [監看式] 視窗的螢幕擷取畫面。

[監看式] 視窗可以包含四個數據行。 [名稱] 和 [] 資料行一律會顯示,而[類型] 和 [位置] 資料行是選擇性的。 若要顯示 [類型 ] 和 [ 位置 ] 資料行,請分別在工具列上選取 [Typecast ] 和 [ 位置 ] 按鈕。

另請參閱

如需控制區域變數的詳細資訊、使用變數和變更範圍的概觀,以及其他記憶體相關命令的描述,請參閱 讀取和寫入記憶體