次の方法で共有


ウォッチ ウィンドウの使用 - WinDbg (クラシック)

[ウォッチ] ウィンドウには、グローバル変数、ローカル変数、レジスタに関する情報が表示されます。 このウィンドウをカスタマイズして、追跡している項目を表示できます。

[ウォッチ] ウィンドウを開く

[ウォッチ] ウィンドウを開くか、ウォッチ ウィンドウに切り替えるには、WinDbg ウィンドウの [表示] メニューで [ウォッチ] をクリックします。

Alt キーを押しながら 2 キーを押すか、ツール バーの [ウォッチ] (Alt + 2) ボタンをクリックすることもできます。Screenshot of the Watch button on the toolbar.

Alt + Shift + 2 キーを押すと、[ウォッチ] ウィンドウが閉じます。

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

Screenshot of an example Watch window in WinDbg.

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

[ウォッチ] ウィンドウでは、次のことができます。

  • [ウォッチ] ウィンドウに変数を追加するには、[名前] 列の最初の空のセルを選択し、変数名を入力して Enter キーを押します。 変数からモジュール名を感嘆符 (!) で区切ります。 モジュールを指定しない場合は、現在のモジュールが使用されます。 [名前] フィールドにアドレスを入力するには、アドレスを 10 進数字で始める必要があります (必要に応じて、プレフィックス 0x を使用します)。

    入力した変数名が現在の関数のスコープで定義されている場合、その値は [] 列に表示されます。 定義されていない場合、[] 列に "エラー: 値を取得できません" と表示されます。

    変数が定義されていない場合でも、[ウォッチ] ウィンドウに追加すると便利です。 プログラム カウンターがこの名前の変数が定義されている関数を入力すると、その値がその時点でウィンドウに表示されます。

  • ウォッチ ウィンドウから変数を削除するには、その名前をダブルクリックし、Delete キーを押して、Enter キーを押します。 古い名前を新しい名前に置き換えるには、古い名前をダブルクリックし、新しい名前を入力して Enter キーを押します。

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

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

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

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

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

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

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

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

  • 変数に加えて、[ウォッチ] ウィンドウで次の項目を監視することもできます。

    • レジスタ。 ウォッチ ウィンドウにレジスタを追加するときは、その名前の先頭にアット マーク (@) を付けます。 変数とは異なり、[ウォッチ] ウィンドウを使用してレジスタ値を変更することはできません。
    • 関数ポインターを含む Vtable。 [ウォッチ] ウィンドウに Vtable が表示されたら、テーブル内の関数エントリを参照できます。 派生実装を指す基底クラスに Vtable が含まれている場合、派生クラスのために追加されるメンバーを示す表記 _vtcast_Class が表示されます。 これらのメンバーは、派生クラス型のように展開されます。
    • _EFN_GetPoolData などの拡張関数の戻り値。

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

新しいワークスペースを開くと、[ウォッチ] ウィンドウの内容がカードされ、新しいワークスペース内のコンテンツに置き換えられます。

ツール バーとショートカット メニュー

[ウォッチ] ウィンドウには、2 つのボタン (Typecast および Locations) と、追加のコマンドを含むショートカット メニューを含むツール バーがあります。 このメニューにアクセスするには、ウィンドウのタイトル バーを右クリックするか、ウィンドウの右上隅付近にあるアイコンをクリックします。Screenshot of the button icon for accessing the Watch window toolbar shortcut menu.

ツール バーとメニューには、次のボタンとコマンドが含まれています。

  • (ツールバーとメニュー) 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 でのレジスタの表示と編集 (クラシック)」を参照してください。