次の方法で共有


グローバル変数へのアクセス

グローバル変数の名前は、アプリケーションのコンパイル時に作成されるシンボル ファイルに格納されます。 デバッガーは、グローバル変数の名前を仮想アドレスとして解釈します。 パラメーターとしてアドレスを受け取るコマンドも、変数の名前を受け取ります。 そのため、「 仮想アドレスによるメモリへのアクセス 」で説明されているすべてのコマンドを使用して、グローバル変数の読み取りまたは書き込みを行うことができます。

また、?(式の評価) コマンドを使用して、任意のシンボルに関連付けられているアドレスを表示できます。

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