共用方式為


使用監看式視窗 - WinDbg (傳統)

[監看式] 視窗會顯示全域變數、區域變數和暫存器的相關資訊。 您可以自訂此視窗以顯示您要追蹤的專案。

開啟監看式視窗

若要開啟或切換至 [監看式] 視窗,請在 WinDbg 視窗中,按一下 [ 檢視 ] 功能表上的 [ 監看式]。

您也可以按 ALT+2,或按一下工具列上的 [ 監看式] (ALT+2) 按鈕: 工具列上 [監看式] 按鈕的螢幕擷取畫面。

ALT+SHIFT+2 會關閉 [監看式] 視窗。

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

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

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

在 [監看式] 視窗中,您可以執行下列動作:

  • 若要將變數新增至 [監看式] 視窗,請選取 [ 名稱 ] 資料行中的第一個空白儲存格,輸入變數名稱,然後按 ENTER 鍵。 以驚嘆號分隔模組名稱與變數, () 。 如果您未指定模組,則會使用目前的模組。 若要在 [ 名稱 ] 欄位中輸入位址,位址必須視需要以十進位數開頭, (,請使用前置詞 0x) 。

    如果您輸入的變數名稱定義在目前函式的範圍中,其值會出現在 [ ] 資料行中。 如果未定義, [值] 資料行會顯示「錯誤:無法取得值」。

    即使未定義變數,將它新增至 [監看式] 視窗也很有用。 如果程式計數器輸入函式,在此函式中定義此名稱的變數,則其值會出現在該時間範圍中。

  • 若要從 [監看式] 視窗移除變數,請按兩下其名稱,按 DELETE,然後按 ENTER 鍵。 您也可以按兩下舊名稱、輸入新名稱,然後按 ENTER 鍵,以新名稱取代舊名稱。

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

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

  • 若要變更區域變數的值,請按兩下其 Value 儲存格。 輸入新值,或編輯舊值。 (剪下、複製和貼上命令可用於編輯。) 您輸入的值可以包含任何 C++ 運算式。 輸入新值或編輯舊值之後,您可以按 ENTER 來儲存新的值,或按 ESC 來捨棄該值。 如果您提交不正確值,當您按下 ENTER 鍵之後,舊值就會重新出現。

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

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

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

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

  • [ 位置] 資料行 (如果在 [監看式] 視窗中顯示,) 顯示資料結構中每個成員的位移。

  • 除了變數之外,您也可以在 [監看式] 視窗中監視下列專案:

    • 寄存 器。 當您將暫存器新增至 [監看式] 視窗時,請在其名稱前面 @ 加上 () 。 不同于變數,您無法透過 [監看式] 視窗變更暫存器值。
    • 包含函式指標的 Vtable。 當 Vtable 出現在 [監看式] 視窗中時,您可以流覽資料表中的函式專案。 如果 Vtable 包含在指向衍生實作的基類中,則會顯示標記法 _vtcast_Class ,表示因為衍生類別而加入的成員。 這些成員會像衍生類別類型一樣展開。
    • 擴充函式的傳回值,例如_EFN_GetPoolData。

不同于 [ 區域變數] 視窗,[監看式] 視窗不會受到 暫存器內容的變更所影響。 在 [監看式] 視窗中,您可以只查看並修改目前程式計數器範圍中定義的變數。

如果您開啟新的工作區,則會捨棄 [監看式] 視窗內容,並以新工作區中的內容取代。

工具列和快捷方式功能表

[監看式] 視窗有一個工具列,其中包含兩個按鈕 (TypecastLocations) ,以及包含其他命令的快捷方式功能表。 若要存取功能表,請以滑鼠右鍵按一下視窗的標題列,或按一下視窗右上角附近的圖示:用來存取 [監看式] 視窗工具列快捷方式功能表之按鈕圖示的螢幕擷取畫面。

工具列和功能表包含下列按鈕和命令:

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

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

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

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

    注意預設基數命令中的永遠顯示數位不會影響長整數。 除非使用 [啟用長整數顯示) ] 命令.enable_long_status (,否則會以十進位格式顯示長整數。 .enable_long_status命令會影響 [區域變數] 視窗、[監看式] 視窗和偵錯工具命令輸出中的顯示。 在 [監看式] 視窗中的功能表中,這個命令並無對等專案。

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

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

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

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

  • (功能表只會) 移至新停駐區 會關閉 [監看式] 視窗,並在新的停駐區中開啟。

  • ([功能表]) [監看式] 視窗類型無法設定為定位點停駐目標 。 此選項僅適用于 [來源 ] 或 [ 記憶體] 視窗。

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

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

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

  • (功能表只會) 關閉 此視窗。

另請參閱

如需控制變數的詳細資訊,以及其他記憶體相關命令的描述,請參閱 讀取和寫入記憶體。 如需註冊及其操作的詳細資訊,請參閱 在 WinDbg 中檢視和編輯暫存器 (傳統)