グローバル変数の名前は、アプリケーションのコンパイル時に作成されるシンボル ファイルに格納されます。 デバッガーは、グローバル変数の名前を仮想アドレスとして解釈します。 パラメーターとしてアドレスを受け取るコマンドも、変数の名前を受け取ります。 そのため、「 仮想アドレスによるメモリへのアクセス 」で説明されているすべてのコマンドを使用して、グローバル変数の読み取りまたは書き込みを行うことができます。
また、?(式の評価) コマンドを使用して、任意のシンボルに関連付けられているアドレスを表示できます。
WinDbg には、グローバル変数の表示と編集に (コマンドに加えて) 使用できるユーザー インターフェイス要素が用意されています。 WinDbg (クラシック) でのグローバル変数の表示と編集を参照してください。
次の例を考えてみます。
MyCounter
グローバル変数 (32 ビット整数) を調べるとします。 また、既定の基数が 10 であるとします。
この変数のアドレスを取得し、次のように表示できます。
0:000> ? MyCounter
Evaluate expression: 1244892 = 0012fedc
0:000> dd 0x0012fedc L1
0012fedc 00000052
最初のコマンド出力は、MyCounter
のアドレスが0x0012FEDCであることを示しています。 その後、 d* (Display Memory) コマンドを使用して、このアドレスに 1 つのダブルワードを表示できます。 (このアドレスの 10 進バージョンである 1244892 を使用することもできます。ただし、ほとんどの C プログラマは0x0012FEDCを使用することを好みます。2 番目のコマンドは、MyCounter の値が0x52 (10 進数 82) であることを示します。
次のコマンドでこれらの手順を実行することもできます。
0:000> dd MyCounter L1
0012fedc 00000052
MyCounter
の値を 10 進数の 83 に変更するには、次のコマンドを使用します。
0:000> ed MyCounter 83
この例では、整数に対して自然な形式に見えるため、10進法で入力を使用します。 ただし、 d\* コマンドの出力は引き続き 16 進形式です。
0:000> dd MyCounter L1 0012fedc 00000053