在 Visual Studio 調試程式中使用記憶體視窗(C#、C++、Visual Basic、F#)
在偵錯期間,[記憶體] 視窗會顯示您的應用程式所使用的記憶體空間。
調試程序視窗,例如 Watch、Autos、局部變數,以及 [QuickWatch] 對話框會顯示變數,這些變數會儲存在記憶體中的特定位置。 [記憶體] 視窗會顯示整體圖片。 記憶體檢視方便用於檢查在其他視窗中不易顯示的大型數據片段(例如緩衝區或大型字串)。
記憶體 視窗不限於顯示數據。 它會在記憶體空間中顯示所有內容,包括數據、程式代碼,以及未分配記憶體中的隨機垃圾位元。
記憶體 視窗不可用於腳本或 SQL 偵錯。 這些語言無法辨識記憶體的概念。
開啟 [記憶體] 視窗
與其他調試程式視窗一樣,記憶體 視窗只能在偵錯會話期間使用。
重要
若要啟用 記憶體 視窗 ,必須在 [工具]>[選項] 中選取 [啟用位址層級偵錯],>[偵錯 >選項]>[一般] 中選取 [啟用位址層級偵錯]。
開啟 [記憶體] 視窗:
請確定在 [工具 ] [選項>] 或 [偵錯 >] 中選取 [啟用位址層級偵錯 ],然後到 [偵錯 >] [一般>]。
選取綠色箭號、按 F5 ,或選取 [偵錯]>[開始偵錯]來開始偵錯。
在 [偵錯>Windows>記憶體] 下,選取 [記憶體 1]、[記憶體 2]、[記憶體 3] 或 [記憶體 4]。 (某些 Visual Studio 版本只提供一個 記憶體 視窗。
多個視窗可讓您同時維護記憶體空間中不同區域的檢視。
在 [記憶體] 視窗中四處移動
電腦的位址空間很大,您在 記憶體 視窗中捲動時,很容易失去位置。
較高的記憶體位址會出現在視窗底部。 若要檢視較高的位址,請往下捲動。 若要檢視較低的位址,請向上捲動。
在大部分情況下,您想要尋找特定的記憶體位置。
尋找記憶體位置
您可以使用拖放功能,或在 [位址] 字段中輸入位址,立即移至 [記憶體] 視窗中的指定位址。
Address 欄位接受英數位址,以及運算結果為位址的運算式,例如 e.User.NonroamableId
。
若要強制立即重新計算 [位址] 字段中的表達式,請選取 [自動重新評估 ] 圖示的迴轉箭號。
根據預設,記憶體 視窗會將 [位址] 表示式視為即時表達式,當應用程式執行時重新評估。 例如,即時表達式可用來檢視指標變數所接觸的記憶體。
使用拖放來移至記憶體位置:
在任何調試程式中,選取記憶體位址,或包含記憶體位址的指標變數。
在 [記憶體] 視窗中拖放位址或指標。
該位址會出現在 [位址] 字段中,而 [記憶體] 視窗會調整為在頂端顯示該位址。
在 [位址] 欄位中輸入位置以移至記憶體位置:
在 [位址] 欄位中輸入或貼上位址或表示式,然後按 Enter,或從 [位址] 字段中的下拉式清單中選擇。
該位址會出現在 [位址] 字段中,而 [記憶體] 視窗會調整為在頂端顯示該位址。
自訂 [記憶體] 視窗
根據預設,記憶體內容會以十六進位格式顯示為1位元組整數,而視窗寬度會決定顯示的欄數。 您可以自訂 [記憶體] 視窗顯示記憶體內容的方式。
變更記憶體內容的格式:
- 在 [記憶體] 視窗中按下滑鼠右鍵,然後從操作功能表中選擇您想要的格式。
變更 [記憶體] 視窗中的數據列數目:
- 選取[欄] 欄位旁的下拉式箭號,然後選取要顯示的欄數,或選取[自動]來根據視窗寬度自動調整。
如果您不希望應用程式執行時變更 記憶體 視窗的內容,您可以關閉即時表達式評估。
切換即時評估:
在 [記憶體] 視窗中按滑鼠右鍵,然後在操作功能表中選取 [自動重新評估]。
注意
實時表達式評估是一個可以切換的功能,且預設為開啟,因此選取 [自動重新評估] 會將其關閉。 選取 自動重新評估 再次開啟。
您可以在 [記憶體] 視窗頂端隱藏或顯示工具列。 隱藏工具列時,您將無法存取 [位址] 字段或其他工具。
切換工具列顯示:
- 在 [記憶體] 視窗中按一下滑鼠右鍵,然後在內容功能表中選取 [顯示工具列]。 工具列隨即出現或消失,視其先前的狀態而定。
透過記憶體追蹤指標 (C/C++)
在原生程式代碼應用程式中,您可以使用註冊名稱作為即時表達式。 例如,您可以使用堆疊指標來追蹤堆疊。
透過記憶體追蹤指標:
在 [記憶體] 視窗的 [位址] 欄位中,輸入位於目前範圍內的指標表達式。 視語言而定,您可能必須取值它。
按 Enter。
當您使用像 步驟這樣的偵錯命令時,地址 欄位中和 記憶體 視窗頂端顯示的記憶體位址會隨著指標變更而自動更新。
檢視記憶體指標 (.NET)
如果您想要根據記憶體指標來檢視 .NET 物件的內容,例如從 堆積快照集取得的位址,您可以使用 {CLR}@Address
表示法來執行此作業。 地址必須是記憶體的指標,例如0x1D102A581B0。 在 [記憶體] 視窗的 [位址] 欄位中,使用 {CLR}@Address
表示法輸入記憶體指標。 或者,您可以使用相同的表示法,在 [監看] 視窗 中新增監看項目。
欲從堆積快照中取得記憶體指標位址,請開啟堆積快照,選擇「偵錯 Managed Memory」,這會開啟「記憶體使用量」工具。 以滑鼠右鍵按下您感興趣的物件,然後選擇 [檢視實例] 。