若要存取記憶體位址或位址範圍,您可以使用數個命令。 Visual Studio 和 WinDbg 提供使用者介面元素(以及命令),可用來檢視和編輯記憶體。 如需詳細資訊,請參閱在 WinDbg 中檢視和編輯記憶體(傳統版)。
下列命令可以讀取或寫入各種格式的記憶體。 這些格式包括十六進位位元組、單字(單字、雙字和四個字)、整數(短、長和四邊整數和無符號整數)、浮點數(10 位元組、16 位元組、32 位元組和64位元組實數),以及ASCII字元。
d* (顯示記憶體) 命令會顯示指定記憶體位址或範圍的內容。
e* (Enter Values) 命令會將值寫入指定的記憶體位址。
您可以使用下列命令來處理更特製化的資料類型:
dt (顯示類型) 命令會尋找各種資料類型,並顯示由正在偵錯的應用程式所建立的數據結構。 此命令非常多才多藝,而且有許多變化和選項。
ds、dS (Display String) 命令會顯示 STRING、ANSI_STRING或UNICODE_STRING數據結構。
dl (顯示連結清單) 命令追蹤並顯示連結清單。
d*s (顯示文字和符號) 命令會尋找可能包含符號資訊的雙字或四字,然後顯示資料和符號資訊。
!address extension 命令會顯示位於特定地址之內存屬性的相關信息。
您可以使用下列命令來操作記憶體範圍:
m (Move Memory) 命令會將一個記憶體範圍的內容移至另一個記憶體範圍。
f (Fill Memory) 命令會將模式寫入記憶體範圍,並重複該模式,直到範圍已滿為止。
c (Compare Memory) 命令會比較兩個記憶體範圍的內容。
s (Search Memory) 命令會在記憶體範圍內搜尋指定的模式,或搜尋存在於記憶體範圍中的任何 ASCII 或 Unicode 字元。
.holdmem (Hold and Compare Memory) 命令會將一個記憶體範圍與另一個記憶體範圍進行比較。
在大部分情況下,這些命令會在目前的基數中解譯其參數。 因此,如果目前的基數不是 16,您應該在十六進位位址之前新增 0x 。 不過,不論目前的基數為何,這些命令的顯示輸出通常都是十六進位格式。 (如需輸出的詳細資訊,請參閱個別命令主題。[ 記憶體] 視窗 會以十進位格式顯示整數和實數,並以十六進位格式顯示其他格式。
若要變更預設的基數,請使用 n (Set Number Base) 命令。 若要快速將數字從一個基底轉換成另一個基底,請使用 ?(評估表達式) 命令或 .formats (顯示數位格式) 命令。
當您執行使用者模式偵錯時,虛擬位址的意義取決於目前的進程。 當您執行內核模式偵錯時,虛擬位址的意義可由調試程式控制。 如需詳細資訊,請參閱 處理內容。