WinDbg でのレジスタの表示と編集 (クラシック)
レジスタは、CPU 上にある小さな揮発性メモリ ユニットです。 多くのレジスタは特定の用途専用であり、その他のレジスタはユーザー モード アプリケーションで使用できます。 x86 ベースと x64 ベースのプロセッサには、使用可能なさまざまなレジスタのコレクションがあります。 各プロセッサのレジスタの詳細については、「プロセッサ アーキテクチャ」を参照してください。
WinDbg では、コマンドを入力するか、[レジスタ] ウィンドウを使用するか、[ウォッチ ウィンドウ] を使用して、レジスタを表示および編集できます。
コマンド
デバッガ コマンド ウィンドウで r (レジスタ) コマンドを入力すると、レジスタを表示および編集できます。 表示をカスタマイズするには、いくつかのオプションを使用するか、rm (マスクの登録) コマンドを使用します。
ターゲットが停止するたびにレジスタも自動的に表示されます。 p (ステップ) または t (トレース) コマンドを使用してコードをステップ実行している場合、各ステップでレジスタ表示が表示されます。 この表示を停止するには、これらのコマンドを使用するときに r オプションを使用します。
x86 ベースのプロセッサでは、r オプションはフラグと呼ばれるいくつかの 1 ビット レジスタも制御します。 これらのフラグを変更するには、通常のレジスタを変更する場合とは少し異なる構文を使用します。 これらのフラグの詳細とこの構文の説明については、「x86 フラグ」を参照してください。
レジスタウィンドウ
レジスタウィンドウを開く
「レジスタ」ウィンドウを開くか、「レジスタ」ウィンドウに切り替えるには、「表示」メニューから「レジスタ」を選択します。 (ALT+4 を押すか、ツールバーの [登録] ボタンを選択することもできます。ALT+SHIFT+4 で「レジスタ」ウィンドウを閉じます。)
次のスクリーン ショットは、[レジスタ] ウィンドウの例を示しています。
[レジスタ] ウィンドウには 2 つの列が含まれています。 Reg 列には、ターゲット プロセッサのすべてのレジスタがリストされます。 「値」列には、各レジスタの現在の値が表示されます。 このウィンドウには、[レジスタ リストのカスタマイズ] ダイアログ ボックスを開くツールバーの [カスタマイズ] ボタンも含まれています。
レジスタウィンドウの使用
[レジスタ] ウィンドウでは、次のことができます。
「値」列には、各レジスタの現在の値が表示されます。 最後に変更されたレジスタの値が赤色のテキストで表示されます。
- 新しい値を入力するには、[値] セルをダブルクリックし、新しい値を入力するか、古い値を編集します。 (切り取り、コピー、および貼り付けのコマンドは編集に使用できます。)
- 新しい値を保存するには、ENTER を押します。
- 新しい値を破棄するには、ESC キーを押します。
- 無効な値を入力した場合、Enter キーを押すと古い値が再表示されます。
レジスタ値は現在の基数で表示され、新しい値を同じ基数に入力する必要があります。 現在の基数を変更するには、デバッガー コマンド ウィンドウで n (基数の設定) コマンドを使用します。
ユーザー モードでは、[レジスタ] ウィンドウに現在のスレッドに関連付けられているレジスタが表示されます。 現在のスレッドの詳細については、「プロセスとスレッドの制御」を参照してください。
カーネル モードでは、[レジスタ] ウィンドウに現在のレジスタ コンテキストに関連付けられたレジスタが表示されます。 特定のスレッド、コンテキスト レコード、またはトラップ フレームに一致するようにレジスタ コンテキストを設定できます。 実際には、指定されたレジスタ コンテキストの最も重要なレジスタのみが表示されます。 それらの値を変更することはできません。
[レジスタ] ウィンドウには、[カスタマイズ] ボタンを含むツールバーと、追加のコマンドを含むショートカット メニューがあります。 メニューにアクセスするには、タイトル バーを選択して保持 (右クリック) するか、ウィンドウの右上隅近くのアイコン (
(ツールバーとメニュー) [カスタマイズ] をクリックすると、[登録リストのカスタマイズ] ダイアログ ボックスが開きます。これについては、このトピック内の次のセクションで説明します。
(メニューのみ) ツールバーは、ツールバーのオンとオフを切り替えます。
(メニューのみ) ドッキングまたはドック解除により、ウィンドウがドッキング状態になったり、ドッキング状態から抜け出したりします。
(メニューのみ) [新しいドックに移動] を選択すると、[レジスタ] ウィンドウが閉じて、新しいドックで開きます。
(メニューのみ) ウィンドウ タイプのタブ ドック ターゲットとして設定は、[レジスタ] ウィンドウでは使用できません。 このオプションは、ソース ウィンドウまたはメモリ ウィンドウでのみ使用できます。
(メニューのみ) [常にフローティング] を選択すると、ウィンドウがドッキング位置にドラッグされた場合でも、ウィンドウはドッキングされていないままになります。
(メニューのみ) [フレームとともに移動] では、ウィンドウがドッキングされていない場合でも、WinDbg フレームを移動するとウィンドウも移動します。
(メニューのみ) [ヘルプ] をクリックすると、Windows 用デバッグ ツールのドキュメントのこのトピックが開きます。
(メニューのみ) [閉じる] はこのウィンドウを閉じます。
「レジスタリストのカスタマイズ」ダイアログボックス
表示されるレジスタのリストを変更するには、「カスタマイズ」ボタンを選択します。 [登録リストのカスタマイズ]ダイアログボックスが表示されます。
このダイアログ ボックスでは、レジスタのリストを編集して、レジスタの表示順序を変更できます。 (実際にはリストからレジスタを削除することはできません。削除すると、最後に再度表示されます。)レジスタ名の間にはスペースが必要です。
[変更されたレジスタ値を最初に表示] チェック ボックスをオンにすると、値が最後に変更されたレジスタが先頭に表示されます。
[サブレジスタを表示しない] チェック ボックスをオンにすると、サブレジスタは表示されません。 たとえば、eax は表示されますが、ax, ah, または al は表示されません。
[OK] を選択して変更を保存するか、[キャンセル] を選択して変更を破棄します。
複数の種類のプロセッサを備えたマルチプロセッサ コンピュータをデバッグしている場合、WinDbg はプロセッサの種類ごとにカスタマイズ設定を個別に保存します。 この分離により、各プロセッサのレジスタの表示を同時にカスタマイズできます。
監視ウィンドウ
WinDbg では、ウォッチ ウィンドウを使用してレジスタを表示できます。 ウォッチ ウィンドウを使用してレジスタの値を変更することはできません。
「ウォッチ」ウィンドウを開くには、「表示」メニューから「ウォッチ」を選択します。 ALT+2 を押すか、ツールバーの [ウォッチ] ボタンを選択することもできます。
次のスクリーン ショットは、Watch ウィンドウの例を示しています。
関連項目
レジスタのコンテキストとその他のコンテキストの設定の詳細については、コンテキストを変更を参照してください。