グローバル変数へのアクセス
グローバル変数の名前は、アプリケーションのコンパイル時に作成される シンボル・ファイルに格納されます。 デバッガはグローバル変数の名前を仮想アドレスとして解釈します。 アドレスをパラメータとして受け付けるコマンドはすべて、変数名も受け付けます。 したがって、「仮想アドレスによるメモリへのアクセス」で説明されているすべてのコマンドを使用して、グローバル変数を読み書きすることができます。
さらに、も使用できますか? (Evaluate Expression)コマンドを使って、任意のシンボルに関連するアドレスを表示することができます。
WinDbg には、グローバル変数の表示と編集に使用できるユーザー・インター フェース・エレメントがあります(コマンドに加えて)。 WinDbg(Classic)のグローバル変数の表示と編集を参照してください。
以下の例を考慮してください。 32ビット整数であるMyCounter
グローバル変数を調べたいとします。 また、デフォルトの基数は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を好んで使う)。番目のコマンドは、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