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