ホームページ  >  記事  >  運用・保守  >  debug gコマンドの使い方は?

debug gコマンドの使い方は?

藏色散人
藏色散人オリジナル
2019-04-29 11:13:5810541ブラウズ

DEBUG の G コマンドはコードの実行に使用されます。その構文は "g [=address] [breakpoints]" です。このコマンドの後にはアドレスとブレークポイントを続けることができます。次のコードまで実行すると一時停止します。メモリ内の指定された場所。パラメータが追加されない場合、デフォルトでは現在の IP からプログラムの最後まで実行されます。

debug gコマンドの使い方は?

DEBUG G コマンドはコードの実行に使用されます。このコマンドの後にはアドレスとブレークポイントを続けることができます。つまり、形式は g [=address] [breakpoints] です。メモリ内の指定された場所でコードを実行した後、一時停止します。パラメータが追加されない場合、デフォルトは次のとおりです。現在の IP からプログラムの最後まで実行します。

debug gコマンドの使い方は?

debug コマンド構文

g [=address] [breakpoints]

パラメータ:
アドレス、現在メモリ内にあるプログラムのアドレス、指定実行を開始するアドレス。
breakpoints は、g サブコマンドの一部として設定できる 1 ~ 10 の一時ブレークポイントを指定します。
?は、デバッグサブコマンドリストを表示します。

注:
Windows XP では、このコマンドは使用されません。 MS-DOS ファイルとの互換性を維持するためにのみ使用してください。
有効なアドレス項目を指定してください。アドレスは、アルファベットのセグメント レコード、または 4 桁のフィールド アドレスとオフセットを含む 2 桁の名前です。セグメントレジスタまたはセグメントアドレスは無視できます。

CS は、「デバッグ」サブコマンド a、g、l、t、u、および w のデフォルトのセクションです。他のすべてのコマンドのデフォルトのセグメントは DS です。すべての値は 16 進形式です。セグメント名とオフセットの間にコロンを含める必要があります。有効なアドレスは次のとおりです。

CS:0100
04BA:0100

アドレス パラメータを使用する
アドレスとブレークポイント アドレス (ブレークポイント) を区別するには、アドレス パラメータの前に等号 (=) を使用する必要があります。

ブレークポイントの指定
ブレークポイント リストのどこにブレークポイントを入力しても、プログラムは最初のブレークポイントで停止します。 Debug.exe は、各ブレークポイントで元の命令をブレーク コードに置き換えます。

プログラムがブレークポイントに到達すると、Debug.exe はすべてのブレークポイント アドレスを元の命令に復元し、すべてのレジスタの内容、すべてのフラグのステータス、および最後に実行された命令のデコードされた形式を表示します。 Debug.exe は、r (register) サブコマンドを使用してブレークポイント アドレスを指定した場合と同じ情報を表示するようになりました。

プログラムをブレークポイントで停止しない場合、Debug.exe は割り込みコードを元の命令に置き換えません。

8086 オペレーション コード (opcode) の最初のバイトを含むアドレスにのみブレークポイントを設定できます。 10 個を超えるブレークポイントが設定されている場合、Debug.exe は次のメッセージを表示します。

bp error

ユーザー スタック ポインターの使用
ユーザー スタック ポインターは有効である必要があり、 g サブコマンドに使用できる 6 バイトが必要です。 g サブコマンドは、iret 命令を使用して、テストする必要があるプログラムにジャンプします。 Debug.exe はユーザー スタック ポインターを設定し、ユーザー フラグ、コード セグメント レジスタ、および命令ポインターをユーザー スタックにプッシュします。 (ユーザー スタックが無効であるか小さすぎる場合、オペレーティング システムが失敗する可能性があります。Debug.exe は、指定されたブレークポイント アドレスまたは指定されたアドレスにブレーク コード (0CCh) を配置します。

プログラムを再起動します
次のメッセージが表示された後は、プログラムを再起動しないでください。

Program terminated normally

プログラムを正しく実行するには、n (名前) サブコマンドと l (ロード) サブコマンドを使用してプログラムを再ロードする必要があります。

p サブコマンドを使用してループ、反復文字列命令、ソフトウェア割り込み、またはサブルーチンを実行する方法については、「関連トピック」を参照してください。
t サブコマンドを使用して命令を実行する方法については、「関連トピック」を参照してください。

現在メモリ内にあるプログラムを実行し、CS セグメントのブレークポイント アドレス 7550 まで実行するには、次のように入力します。

gcs:7550

Debug.exe を実行すると、

2 つのブレークポイントを設定するには、次のように入力します:


gcs:7550, cs:8000

デバッグ後に g サブコマンドを再度入力する場合。 exe がブレークポイントに遭遇すると、開始アドレスではなくブレークポイントの後の命令から実行が開始されます。


以上がdebug gコマンドの使い方は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。