Visual Studio 調試系列7 查看變數佔用的記憶體(使用記憶體窗口)

  • 2019 年 10 月 4 日
  • 筆記

在調試期間,「記憶體」窗口顯示應用程式正在使用的記憶體空間。

調試器窗口(如監視窗口、自動窗口、局部變數窗口和快速監視對話框)顯示變數,這些變數存儲在記憶體中的特定位置。「記憶體」窗口向您顯示整體圖片。記憶體視圖便於檢查在其他窗口中顯示不好的大數據塊(例如緩衝區或大字元串)。

記憶體窗口不限於顯示數據。它顯示記憶體空間中的所有內容,包括數據、程式碼和未分配記憶體中的隨機垃圾位。

記憶體窗口不可用於腳本或SQL調試。這些語言不能識別記憶體概念。

01 打開記憶體窗口

要啟用記憶體窗口,必須在「工具>選項」(或「調試>選項」)>調試>常規中選擇「啟用地址級調試」。

打開「記憶體」窗口

  1. 請確保啟用地址級調試中選擇工具 > 選項(或調試 > 選項) >調試 > 常規。
  2. 開始調試通過選擇綠色箭頭,按F5,或選擇調試 > 開始調試。
  3. 下調試 > Windows > 記憶體,選擇記憶體 1,記憶體 2,記憶體 3,或記憶體 4。 (某些版本的Visual Studio產品/服務只有一個記憶體窗口。)

02 在記憶體窗口中移動

電腦的地址空間很大,您可以通過滾動記憶體窗口輕鬆地丟失您的位置。

較高的記憶體地址顯示在窗口的底部。要查看更高的地址,請向下滾動。要查看較低的地址,請向上滾動。

您可以使用拖放或在「 地址」欄位中輸入地址,立即轉到「 記憶體」窗口中的指定地址。「 地址」欄位接受字母數字地址和計算地址的表達式,例如。e.User.NonroamableId

要強制立即重新評估「 地址」欄位中的表達式,請選擇「 自動重新評估自動」圖標的圓角箭頭。

默認情況下,「 記憶體」窗口將「 地址」表達式視為實時表達式,在應用程式運行時將其重新評估。例如,實時表達式可用於查看指針變數觸及的記憶體。

要使用拖放移動到記憶體位置:

  1. 在任何調試器窗口中,選擇記憶體地址或包含記憶體地址的指針變數。
  2. 將地址或指針拖放到「 記憶體」窗口中。該地址隨後出現在「 地址」欄位中,「 記憶體」窗口將調整為在頂部顯示該地址。

要在「地址」欄位中輸入記憶體位置,請移至記憶體位置:

  • 在「 地址」欄位中鍵入或粘貼地址或表達式,然後按Enter鍵,或從「 地址」欄位的下拉列表中選擇它。「 記憶體」窗口調整為在頂部顯示該地址。

按下回車鍵,如下圖:

但是個人看不懂裡面具體的內容。

03 自定義記憶體窗口

默認情況下,記憶體內容以十六進位格式顯示為1位元組整數,窗口寬度決定顯示的列數。您可以自定義「 記憶體」窗口顯示記憶體內容的方式。

要更改記憶體內容的格式:

  • 在「 記憶體」窗口中單擊滑鼠右鍵,然後從上下文菜單中選擇所需的格式。

要更改「記憶體」窗口中的列數:

  • 選擇「 列」欄位旁邊的下拉箭頭,然後選擇要顯示的列數,或者根據窗口寬度選擇「 自動」進行自動調整。也可以手動輸入數字。

如果您不希望在應用程式運行時更改「 記憶體」窗口的內容,則可以關閉實時表達式評估。

要切換實時評估:

  • 在「 記憶體」窗口中單擊滑鼠右鍵,然後在上下文菜單中選擇「 自動重新評估」。

您可以隱藏或顯示「 記憶體」窗口頂部的工具欄。隱藏工具欄時,您將無法訪問「 地址」欄位或其他工具。

要切換工具欄顯示:

  • 在「 記憶體」窗口中單擊滑鼠右鍵,然後在上下文菜單中選擇「 顯示工具欄 」。工具欄顯示或消失,具體取決於其先前的狀態。

04 跟蹤記憶體中的指針

在本機程式碼應用程式中,您可以將註冊名稱用作實時表達式。例如,您可以使用堆棧指針跟隨堆棧。

要通過記憶體跟蹤指針:

  1. 在「 記憶體窗口地址」欄位中,輸入當前範圍內的指針表達式。根據語言的不同,您可能需要取消引用它。
  2. 按Enter鍵。 使用諸如Step之類的調試命令時,「 地址」欄位和「 記憶體」窗口頂部顯示的記憶體地址會隨著指針的更改而自動更改。

Tags: