在 WinDbg 中檢視和編輯記憶體 (傳統)

在 WinDbg 中,您可以輸入命令或使用 [記憶體] 視窗來檢視和編輯記憶體。

偵錯工具命令視窗

您可以在 [偵錯工具命令] 視窗中輸入其中一個 顯示記憶體 命令,以檢視記憶體。 您可以在 [偵錯工具命令] 視窗中輸入其中一個 Enter Values 命令,以編輯記憶體。 如需詳細資訊,請參閱 依虛擬位址存取記憶體 ,以及 依實體位址存取記憶體

開啟記憶體視窗

若要開啟 [記憶體] 視窗,請從 [檢視] 功能表選擇 [記憶體]。 (您也可以按 ALT+5,或選取 [ 記憶體 ] 按鈕 (WinDbg 中 [記憶體] 按鈕的螢幕擷取畫面。

下列螢幕擷取畫面顯示 [記憶體] 視窗的範例。

WinDbg 中範例 [記憶體] 視窗的螢幕擷取畫面。

使用記憶體視窗

[記憶體] 視窗會顯示數個數據行中的資料。 視窗左側的資料行會顯示每一行的開頭位址。 其餘資料行會顯示要求的資訊,從左至右。 如果您在 [顯示格式] 功能表中選取 [位元組],則對應至這些位元組的 ASCII 字元會顯示在視窗右側。

注意 根據預設,[記憶體] 視窗會顯示虛擬記憶體。 這種類型的記憶體是使用者模式中唯一可用的記憶體類型。 在核心模式中,您可以使用 [ 記憶體選項 ] 對話方塊來顯示實體記憶體和其他資料空間。 本主題稍後會說明 [ 記憶體選項 ] 對話方塊。

在 [記憶體] 視窗中,您可以執行下列動作:

  • 若要寫入記憶體,請在 [記憶體] 視窗內選取並輸入新資料。 您只能編輯十六進位資料—您無法直接編輯 ASCII 和 Unicode 字元。 當您輸入新資訊時,變更就會立即生效。

  • 若要查看其他記憶體區段,請使用 [記憶體] 視窗工具列上的 [ 上一 頁] 和 [ 下一步 ] 按鈕,或按 PAGE UP 或 PAGE DOWN 鍵。 這些按鈕和按鍵會顯示緊接在記憶體的前面或下列區段。 如果您要求不正確頁面,會出現錯誤訊息。

  • 若要在視窗內流覽,請使用向右鍵、向左鍵、向上鍵和向下鍵。 如果您使用這些索引鍵來移出頁面,則會顯示新的頁面。 使用這些索引鍵之前,您應該調整 [記憶體] 視窗的大小,使其沒有捲軸。 此調整大小可讓您區分實際頁面邊緣和視窗截斷。

  • 若要變更正在檢視的記憶體位置,請在 [記憶體] 視窗頂端的位址方塊中輸入新的位址。 請注意,[記憶體] 視窗會在您輸入位址時重新整理其顯示,因此您可以在輸入位址之前收到錯誤訊息。

    注意 您在方塊中輸入的位址會在目前的弧度中解譯。 如果目前的弧度不是 16,您應該在十六進位位址前面加上 0x。 若要變更預設的弧度,請使用 [偵錯工具命令] 視窗中 的 n ([設定數位基底) ] 命令。 記憶體視窗本身內的顯示不會受到目前弧度的影響。

  • 若要變更視窗用來顯示記憶體的資料類型,請使用 [記憶體] 視窗工具列中的 [ 顯示格式 ] 功能表。 支援的資料類型包括短字、雙字和四字;short、long 和四個整數和不帶正負號的整數;10 位元組、16 位元組、32 位和 64 位實數;ASCII 字元;Unicode 字元;和十六進位位元組。 顯示十六進位位元組也包含 ASCII 字元。

[記憶體] 視窗有一個工具列,其中包含兩個按鈕、一個功能表和一個方塊,而且具有具有其他命令的快捷方式功能表。 若要存取功能表,請選取並按住 (或以滑鼠右鍵按一下標題列) ,或選取工具列上視窗右上角附近的圖示。 ALT+SHIFT+5 會關閉作用中的 [記憶體] 視窗。

  • (工具列) [位址] 方塊可讓您指定新的位址或位移。 此方塊的確切意義取決於您正在檢視的記憶體類型。 例如,如果您要檢視虛擬記憶體,此方塊可讓您指定新的虛擬位址或位移。

  • ([工具列]) [顯示格式 ] 可讓您選取新的顯示格式。

  • (工具列和功能表) 工具列) 上一個 (和快捷方式功能表上的上一頁 () 導致上一節的記憶體顯示。

  • (工具列和功能表) 工具列上的 [ 下一 (] 工具列) 和快捷方式功能表上的 [ 下一 頁] 頁面 (,) 導致顯示下一個記憶體區段。

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

  • (功能表只會) 自動調整 資料行可確保 [記憶體] 視窗中顯示的資料行數目符合 [記憶體] 視窗的寬度。

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

  • (功能表只會) 移至新的停駐 會關閉 [記憶體] 視窗,並在新的擴充座中開啟它。

  • (功能表只會) 設定 為視窗類型的定位點停駐目標 ,會將選取的 [記憶體] 視窗設定為其他記憶體視窗的索引標籤停駐目標。 選擇一個之後開啟的所有記憶體視窗,都會自動與索引標籤式集合中的該視窗分組。

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

  • (功能表只會) 使用框架移動 ,即使視窗未停駐,也會在 WinDbg 畫面格移動時移動視窗。

  • (功能表只會) [屬性 ] 開啟 [ 記憶體選項 ] 對話方塊,本主題的下一節會說明此對話方塊。

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

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

記憶體選項對話方塊

當您選取快捷方式功能表上的 [ 屬性 ] 時,[ 記憶體選項 ] 對話方塊隨即出現。

在核心模式中,此對話方塊中有六種可用記憶體類型做為索引標籤: 虛擬記憶體實體記憶體匯流排資料控制資料I/O (I/O 埠資訊) ,以及 MSR (模型特定的註冊資訊) 。 選取對應至您想要存取之資訊的索引標籤。

在使用者模式中,只有 [ 虛擬記憶體 ] 索引標籤可供使用。

每個索引標籤都可讓您指定您想要顯示的記憶體:

  • 在 [ 虛擬記憶體] 索引標籤的 [ 位移 ] 方塊中,指定您要檢視之記憶體範圍開頭的位址或位移。

  • 在 [ 實體記憶體] 索引標籤的 [ 位移 ] 方塊中,指定您要檢視之記憶體範圍開頭的實體位址。 [記憶體] 視窗只能顯示描述、可快取的實體記憶體。 如果您想要顯示具有其他屬性的實體記憶體,請使用d* (Display Memory) 命令或!d\*延伸模組。

  • 在 [ 匯流排資料] 索引 標籤的 [ 匯流排資料類型 ] 功能表中,指定匯流排資料類型。 然後,使用 [匯流排號碼]、[ 位置編號] 和 [ 位移 ] 方塊來指定您想要檢視的匯流排資料。

  • 在 [ 控制項資料] 索引 標籤中,使用 [處理器 ] 和 [ 位移 ] 文字方塊來指定您想要檢視的控制項資料。

  • 在 [ I/O] 索引標籤的 [ 介面類別型 ] 功能表中,指定 I/O 介面類別型。 使用 [匯流排號碼]、[ 位址空間] 和 [ 位移 ] 方塊來指定您想要檢視的資料。

  • [MSR ] 索引標籤的 [MSR ] 方塊中,指定您想要檢視的模型特定暫存器。

每個索引標籤也包含 [顯示格式] 功能表。 此功能表的效果與 [記憶體] 視窗中的 [顯示格式 ] 功能表相同。

在 [記憶體選項] 對話方塊中選取[確定],讓您的變更生效。

其他資訊

如需記憶體操作的詳細資訊,以及其他記憶體相關命令的描述,請參閱 讀取和寫入記憶體