[逆アセンブル]ペイン

提供: RAD Studio
移動先: 案内検索

CPU ウィンドウ:インデックス への移動


[表示|デバッグ|CPU ウィンドウ|逆アセンブル]

ソース コードの各行に対して、アドレス、16 進数表現のマシン コード命令(オペコード)、およびアセンブル命令を表示します。このアドレスは逆アセンブル対象メソッドの中でのオフセットです。[逆アセンブル]ペインは、[CPU 全体]を表示([表示|デバッグ|CPU ウィンドウ|CPU 全体])したときの製品ウィンドウの左上にあります。

デバッグ情報が入手できる場合、デバッガはアセンブル命令に対応するソース コードを表示します。

アドレスの左側に表示された右向き矢印(実行中の場所)は、現在実行中の場所を示します。

現在の命令が移行命令(calljmp など)の場合、命令の後に上向きまたは下向きの矢印が表示され、移行命令の移行先の方向が示されます。たとえば、移行先が現在の命令よりも前にある場合、上向き矢印が表示されます。移行先が現在の命令よりも後にある場合は、下向き矢印が表示されます。

条件移行命令(jzjle など)では、条件が true の場合にのみ矢印が表示されます。条件設定命令(setasetz など)では、条件が true の場合にのみ左向き矢印が表示されます。

[逆アセンブル]ペインのスクロール

次のいずれかの方法で[逆アセンブル]ペインをスクロールすることができます。

  • Ctrl+← および Ctrl+→ を押すと、表示開始位置が 1 バイトずつ上または下に移動します。表示開始位置を変更すると、デバッガがマシン コードの逆アセンブルを開始する位置が変わります。
  • 縦スクロールバーの上または下をクリックすると、1 画面分ずつ上または下にスクロールします ([逆アセンブル]ペインに表示される情報の量が非常に多いため、スクロールバーのドラッグはできないようになっています)。
  • 次の表で説明するコンテキスト メニュー コマンドの[指定アドレスに移動...]、[現在の EIP に移動]、[カーソル位置をアドレスと見なす]、[前へ]を使用します。


コンテキスト メニュー

項目 説明

[有効]

ブレークポイントを右クリックした場合にのみ表示されます。ブレークポイントの有効/無効を切り替えます。

[ブレークポイントの設定]

ブレークポイントを右クリックした場合にのみ表示されます。[アドレス ブレークポイントの設定]ダイアログ ボックスが開きます。

[カーソル位置まで実行]

[CPU]ウィンドウで選択した命令まで、プログラムを最高速度で実行します。プログラムを停止した後、このコマンドを使って、特定のプログラム命令でデバッグを再開することができます。

[ブレークポイントのトグル]

現在選択しているアドレスでブレークポイントを設定または削除します。

[指定アドレスに移動...]

[指定アドレスに移動]ダイアログ ボックスが開き、シンボルか、マネージ コードの場合にはジャストインタイム(JIT)コンパイラ形式のアドレスを入力することができます。

[現在の EIP に移動]

[CPU]ウィンドウを現在のプログラム カウンタの位置(EIP レジスタが示す位置)に移動します。この位置は、プログラムが次に実行する命令を示しています。

[カーソル位置をアドレスと見なす]

選択した命令の移行先アドレスにペインを移動します。

[カーソル位置をアドレスと見なす]コマンドは、制御の移行を引き起こす命令(CALL、JMP、INT など)や条件ジャンプ命令(JZ、JNE、LOOP など)と組み合わせて使用します。条件ジャンプ命令では、ジャンプ条件が true であるかのようにアドレスが表示されます。ジャンプ元に戻るには[前へ]コマンドを使用してください。

[呼び出し元]

[逆アセンブル]ペインを、現在の割り込みまたはサブルーチンを呼び出した命令の次の命令に移動します。現在の割り込みルーチンがデータ項目をスタックにプッシュしている場合には、ルーチンがどこから呼ばれたかをデバッガが判断できないことがあります。
[プロジェクト|オプション...|コンパイル]ダイアログ ボックスの[コード生成]にある[スタック フレーム]オプションを有効にしている場合(Delphi)、または [プロジェクト|オプション...|C++ コンパイラ][標準スタック フレーム]を有効にしている場合(C++)には、[呼び出し元]が最も有効に機能します。

[前へ]

[CPU]ウィンドウを、前回[カーソル位置をアドレスと見なす]コマンドが実行される前の表示に戻します。

[検索...]

[データ検索]ダイアログ ボックスが表示され、[CPU]ウィンドウで、式またはバイト リストを前方検索できます(詳細は、[データ検索]ダイアログ ボックスの[ヘルプ]をクリックしてください)。

[ソースの表示]

コード エディタをアクティブにし、[CPU]ウィンドウで選択されている逆アセンブル命令に対応する最も近いソース コード行にカーソルを移動します。対応するソース コードがない場合には、このコマンドは何も行いません。

[ソース コードの表示]

アセンブル命令だけを表示するか、アセンブル命令とそれに対応するソース コードを表示するか(デバッグ情報が入手できる場合)を切り替えます。

[混合 IL コード]

マネージ コードのデバッグ時に、MSIL 命令を表示に含めるかどうかを切り替えます。

[アドレスの表示]

命令のアドレスを表示します。

[オペコードの表示]

命令のオペコードを表示します。選択肢には[自動][常時][しない]があります。デフォルト値は[自動]で、ウィンドウにオペコードの列を表示する幅がある場合にオペコードが表示されます。

[現在のアドレスを EIP レジスタに代入]

命令ポインタの場所(EIP レジスタの値)を[逆アセンブル]ペインで現在強調表示されている行に変更します。このコマンドは、特定のマシン命令をスキップする場合に使用します。プログラム実行を再開すると、このアドレスから実行が開始されます。ステップ実行命令とは違って、このコマンドでは、デバッガはスキップした命令を実行しません。

注意: プログラム命令をスキップするとシステムが不安定な状態になりやすいため、このコマンドを使用するときには十分に注意してください。スタック フレームと各レジスタが示す値は、プログラムの現在の場所で正確ではないことがあります。

[コピー]

選択したすべての命令をクリップボードにコピーします。[逆アセンブル]ペインでは、1 つの命令を選択することも、Shift キーを使って複数の命令を選択することも可能です。それ以外のペインでは、1 つの項目しか選ぶことができません。

[FPU レジスタの表示]

[FPU]ビューを表示し、浮動小数点レジスタ、MMX レジスタ、および SSE レジスタを表示します。

関連項目