「WinDbg (クラシック) のローカル変数の表示と編集」を参照してください。

WinDbg では、コマンドを入力するか、[ローカル] ウィンドウを使用するか、[ウォッチ] ウィンドウを使用してローカル変数を表示できます。

デバッガーコマンドウィンドウ

デバッガー コマンド ウィンドウで dv コマンドまたは dt コマンドを入力すると、ローカル変数とパラメーターを表示できます。

[ローカル] ウィンドウを開きます

ローカル ウィンドウには、現在のスコープ内のすべてのローカル変数に関する情報が表示されます.

[ローカル] ウィンドウを開くか、[ローカル] ウィンドウに切り替えるには、WinDbg ウィンドウの [ 表示 ] メニューで [ ウォッチ] を選択します。 (ALT+3 を押すか、ツールバーの [ローカル] ボタンを選択することもできます。ALT+SHIFT+3 で [ローカル] ウィンドウを閉じます。)

次のスクリーン ショットは、[ローカル] ウィンドウの例を示しています。

Screenshot of the Locals window in WinDbg.

[ローカル] ウィンドウには 4 つの列を含めることができます。 [ 名前 ] 列と [ ] 列は常に表示され、[ 種類 ] 列と [ 場所 ] 列は省略可能です。 [ 種類 ] 列と [ 場所 ] 列を表示するには、ツールバーの [ タイプキャスト ] ボタンと [ 場所 ] ボタンをそれぞれ選択します。

ローカルウィンドウの使用

[ローカル] ウィンドウでは、次のことができます。

  • [名前] 列には、各ローカル変数の名前が表示されます。 変数がデータ構造の場合は、名前の横にチェックボックスが表示されます。 構造メンバーの表示を展開または折りたたむには、チェック ボックスをオンまたはオフにします。

  • 「値」 列には、各変数の現在の値が表示されます。

    • 変数の新しい値を入力するには、現在の値をダブルクリックして新しい値を入力するか、古い値を編集します。 (切り取り、コピー、貼り付けのコマンドを編集に使用できます)。任意 の C++ 式を入力できます。
    • 新しい値を保存するには、ENTER を押します。
    • 新しい値を破棄するには、ESC キーを押します。
    • 無効な値を入力した場合、Enter キーを押すと古い値が再表示されます。

    int 型の整数は 10 進値として表示され UINT 型の整数は現在の基数で表示されます。 現在の基数を変更するには、デバッガー コマンド ウィンドウで n (基数の設定) コマンドを使用します。

  • タイプ 列 (ローカル ウィンドウに表示されている場合) には、各変数の現在のデータ タイプが表示されます。 各変数は、独自のデータ型に適した形式で表示されます。 データ構造の型名は、[ ] 列にあります。 その他の変数型は、この列に "新しい型を入力" と表示されます。

    [新しい型を入力] をダブルクリックすると、新しいデータ型を入力して型をキャストできます。 このキャストは、ローカル ウィンドウ内でのみこの変数の現在の表示を変更します。 デバッガーやターゲット コンピューターでは何も変更されません。 さらに、[ ] 列に新しい値を入力すると、入力したテキストは、[ ] 列に入力した新しい型ではなく、シンボルの実際の型に基づいて解析されます。 [ローカル] ウィンドウを閉じて再度開くと、データ型の変更は失われます。

    [ ] 列に拡張コマンドを入力することもできます。 デバッガーはシンボルのアドレスをこの拡張機能に渡し、結果の出力を現在の行の下にある折りたたみ可能な一連の行に表示します。 たとえば、この行のシンボルがスレッド環境ブロックの有効なアドレスである場合は、[ ] 列に「 !teb 」と入力して、このシンボルのアドレスで !teb 拡張子を実行できます。

  • [ 場所 ]列 ([ローカル] ウィンドウに表示されている場合) には、データ構造の各メンバーのオフセットが表示されます。

  • ローカル変数が Vtable を含むクラスのインスタンスである場合は [名前] 列に Vtable が表示され、Vtable を展開して関数ポインターを表示できます。 Vtable が派生実装を指す基本クラスに含まれている場合、派生クラスのために追加されるメンバーを示す表記 _vtcast_Class が表示されます。 これらのメンバーは、派生クラス型のように展開されます。

  • ローカル コンテキスト によって、[ローカル] ウィンドウに表示されるローカル変数のセットが決まります。 何らかの理由でローカル コンテキストが変更されると、[ローカル] ウィンドウが自動的に更新されます。 デフォルトでは、ローカル コンテキストはプログラム カウンターの現在位置と一致します。 ローカル コンテキストを変更する方法の詳細については、「ローカル コンテキスト」を参照してください。

[ローカル] ウィンドウには、2 つのボタン (タイプキャスト および ロケーション) を含むツールバーと、追加コマンドを含むショートカット メニューがあります。 メニューにアクセスするには、ウィンドウのタイトル バーを選択したままにする (または右クリックする) か、ウィンドウの右上隅近くにあるアイコンを選択します。 ツール バーとメニューには、次のボタンとコマンドが含まれています

  • (ツールバーとメニュー) Typecast を使用すると、[ ] 列の表示のオンとオフが切り替わります。

  • (ツールバーとメニュー) 場所 を使用すると、[ 場所 ] 列の表示のオンとオフが切り替わります。

  • (メニューのみ) Unicode がこのウィンドウに Unicode 文字列を表示する場合は、16 ビット値を表示します。 このコマンドは、[ローカル] ウィンドウ、ウォッチ ウィンドウ、デバッガー コマンドの出力に影響するグローバル設定のオンとオフを切り替えます。 このコマンドは .enable_unicode (Unicode 表示を 有効にする) コマンドの使用と同じです。

  • (メニューのみ) 数値を常にデフォルトの基数で表示する では、整数が 10 進形式で表示されるのではなく、デフォルトの基数で表示されます。 このコマンドは、[ローカル] ウィンドウ、ウォッチ ウィンドウ、デバッガー コマンドの出力に影響するグローバル設定のオンとオフを切り替えます。 このコマンドは .force_radix_output (整数に基数を 使用) コマンドを使用する場合と同じです。

    注: 既定の基数の [ 常に表示する数値 ] コマンドは、長整数には影響しません。 .enable_long_status (長整数表示の有効化) コマンドが設定されていない限り、長整数は 10 進数形式で表示されます。 .enable_long_status コマンドは、[ローカル] ウィンドウ、ウォッチ ウィンドウ、デバッガー コマンド出力の表示に影響します。[ローカル] ウィンドウのメニューには、このコマンドに相当するものはありません。

  • (メニューのみ) [選択した値のメモリ ウィンドウを開く] では、選択した式のアドレスから始まるメモリを表示する新しいドッキング されたメモリ ウィンドウが開きます。

  • (メニューのみ) 選択したメモリ値に対して dt を呼び出すと、選択したシンボルをパラメーターとしてdt (Display 型) コマンドが実行されます。 [デバッガー コマンド] ウィンドウに、結果が表示されます。 -n オプションは、シンボルと 16 進アドレスを区別するのに自動的に使用されます。 他のオプションは使用されません。 このメニュー選択を使用して生成されるコンテンツは、コマンド ラインから dt コマンドを実行するときに生成されるコンテンツと同じですが、形式が若干異なることに注意してください。

  • (メニューのみ) ツールバー は、ツールバーのオンとオフを切り替えます。

  • (メニューのみ) ドッキング または ドック解除 により、ウィンドウがドッキング状態になったり、ドッキング状態から抜け出したりします。

  • (メニューのみ) [新しいドックに移動] をクリックすると、ローカル ウィンドウが閉じて、新しいドックで開きます。

  • (メニューのみ) ウィンドウ タイプのタブ ドック ターゲットとして設定 はローカル ウィンドウでは使用できません。 このオプションは、ソース ウィンドウまたはメモリ ウィンドウでのみ使用できます。

  • (メニューのみ) [常にフローティング] を選択すると、ウィンドウがドッキング位置にドラッグされた場合でも、ウィンドウはドッキングされていないままになります。

  • (メニューのみ) [フレームとともに移動] では、ウィンドウがドッキングされていない場合でも、WinDbg フレームを移動するとウィンドウも移動します。

  • (メニューのみ) [ヘルプ] をクリックすると、Windows 用デバッグ ツールのドキュメントのこのトピックが開きます。

  • (メニューのみ) [閉じる] はこのウィンドウを閉じます。

監視ウィンドウ

WinDbg では、[ウォッチ] ウィンドウを使用して、ローカル変数を表示および変更できます。 [ウォッチ] ウィンドウには、必要な変数の一覧を表示できます。 これらの変数には、任意の関数のグローバル変数とローカル変数を含めることができます。 ウォッチ ウィンドウには、現在の関数のスコープに一致する変数の値がいつでも表示されます。 これらの変数の値は、[ウォッチ] ウィンドウから変更することもできます。

[ローカル ウィンドウ] とは異なり、[ウォッチ] ウィンドウはローカル コンテキストの変更の影響を受けません。 値を表示または変更できるのは、現在のプログラム カウンターのスコープで定義されている変数だけです。

「ウォッチ」ウィンドウを開くには 「表示」 メニューから 「ウォッチ」 を選択します。 ALT+2 を押すか、ツールバーの ウォッチ ボタンを選択することもできます。 ALT+SHIFT+2はウォッチウィンドウを閉じます。

次のスクリーン ショットは、Watch ウィンドウの例を示しています。

Screenshot of the Watch window in WinDbg.

[ウォッチ] ウィンドウには 4 つの列を含めることができます。 [ 名前 ] 列と [ ] 列は常に表示され、[ 種類 ] 列と [ 場所 ] 列は省略可能です。 [ 種類 ] 列と [ 場所 ] 列を表示するには、ツールバーの [ タイプキャスト ] ボタンと [ 場所 ] ボタンをそれぞれ選択します。

関連項目

ローカル変数の制御の詳細、変数の使用とスコープの変更の概要、およびその他のメモリ関連コマンドの説明については、「 メモリの読み取りと書き込み」を参照してください。