存取全域變數
全域變數的名稱會儲存在編譯應用程式時所建立的符號檔中。 偵錯工具會將全域變數的名稱解譯為虛擬位址。 接受位址做為參數的任何命令,也會接受變數的名稱。 因此,您可以使用虛擬 位址存取記憶體 中所述的所有命令來讀取或寫入全域變數。
此外,您可以使用 ? (Evaluate Expression) 命令來顯示與任何符號相關聯的位址。
WinDbg 提供使用者介面元素,除了命令) 檢視和編輯全域變數之外,您還可以使用 (。 請參閱 在 WinDbg 中檢視和編輯全域變數, (傳統) 。
請思考一下下列範例。 假設您想要檢查 MyCounter
全域變數,這是 32 位整數。 此外,假設預設的弧度為 10。
您可以取得此變數的位址,然後如下所示顯示它。
0:000> ? MyCounter
Evaluate expression: 1244892 = 0012fedc
0:000> dd 0x0012fedc L1
0012fedc 00000052
第一個命令輸出會告訴您 的 MyCounter
位址0x0012FEDC。 然後,您可以使用 d* (顯示記憶體) 命令,在此位址顯示一個雙字。 (您也可以使用1244892,這是此位址的十進位版本。不過,大部分 C 程式設計人員偏好使用 0x0012FEDC.) 第二個命令會告訴您 MyCounter 的值0x52 (decimal 82) 。
您也可以在下列命令中執行這些步驟。
0:000> dd MyCounter L1
0012fedc 00000052
若要將 的值 MyCounter
變更為十進位 83,請使用下列命令。
0:000> ed MyCounter 83
此範例使用十進位輸入,因為該格式對整數而言更為自然。 不過,d\*命令的輸出仍為十六進位格式。
0:000> dd MyCounter L1 0012fedc 00000053