Visual Studio 2022 | 偵錯工具中使用記憶體視窗
前言
於寫程式的過程中,常常需要知道記憶體內容的情況,因為可以幫助我們判斷寫入的資料是否有誤,對程式偵錯來說是很有用的。
然而使用Visual Studio來觀看程式中的記憶體數值是件非常簡單方便的事。
直接看看在Visual Studio觀看記憶體的結果畫面。
註:此處使用
Visual Studio 2022為例。
準備專案與偵錯程式
首先,我們使用Visual Studio 2022來開個專案或是沿用HelloWorld專案。
宣告個整數變數a = 1,然後使用printf印出這個變數的位址。
1 |
|

開啟記憶體視窗
注意事項:
- 首先該視窗與其他偵錯工具視窗一樣, 記憶體視窗只能在偵錯會話期間使用。
- 若要啟用記憶體視窗,必須在【工具(T)】→【選項(O)】開啟選項視窗,開啟「偵錯」→「一般」 中勾選[啟用位址層級偵錯]。

開始偵錯與開啟記憶體視窗:
- 由於此處示範的是
x86的偵錯模式,所以方案平台的選項是選擇x86。 - 首先在程式的
std::cout << "Hello World!\n";這行產生一個紅色圓圈的中斷點。
- 接著我們按【本機 Windows 偵錯工具】來進行偵錯。

- 此時進入了偵錯模式,並且程式運行到剛剛設定的中斷點;也開啟了一個主控台視窗,畫面上輸出
a變數的記憶體位址0038FED4了。
- 此時可見
Visual Studio偵錯模式下一些預設的視窗被開啟,像是下方的自動變數、右方的診斷工具…等等。註:這些視窗是預設開啟的視窗,可以透過設定或關閉進行調整,這邊就不詳細說明。

- 在偵錯模式下,點選【偵錯(D)】→【視窗(W)】→【記憶體(M)】→【記憶體 1(1)】。
- 這邊只開啟一個記憶體視窗就好,多個應該是方便觀看多個記憶體位址。
註:
Visual Studio的某些版本只提供一個「記憶體視窗」。
注意:必須在偵錯模式中,視窗才會有記憶體的選項。
- 「記憶體視窗」預設放在上方的區塊。

- 接著我們在「記憶體視窗」內的「位址」輸入框內輸入,上方得知的
a變數的記憶體位址0x0038FED4,並按下Enter。註:最常用(或常見)表示十六進位數值的方式是將 ‘0x’ 加在數位前,或在數位後加上小字 16。例如 0x2BAD 和 2BAD16 都是表示十進位的 11181(或1118110)。
- 可見已經定位到記憶體位址
0x0038FED4,並表示出記憶體內存放的數值01 00 00 00,也就代表這個四個位元組的變數的記憶體數值。
x86與x64的記憶體視窗差異
我們直接觀看記憶體視窗的差異,至於x86與x64的差異不是這篇的重點就不深入說明。<有興趣可以上網查查關鍵字>
- x86

- x64

結語
使用「記憶體視窗」學習基礎的程式語言、指標、記憶體操作、破解程式、逆向工程…等等都是很基本的一個入門。
註:以上參考了
Microsoft - 在 Visual Studio 偵錯工具中使用記憶體視窗
維基百科 - 十六進位
Family with 220 icons by inipagi
