R ・・・・・・・・ レジスタ値の表示と変更
D ・・・・・・・・ メモリ値の表示(複数)
? ・・・・・・・・ メモリ値の表示(1つ)
E ・・・・・・・・ メモリ値の変更(他に EB、EW、ED、EA)
V ・・・・・・・・ ソース行の表示
T ・・・・・・・・ トレース(1命令の実行)
S ・・・・・・・・ ステップ(CALL 命令を飛ばすトレース)
G ・・・・・・・・ 現地点からの通常実行
B ・・・・・・・・ ブレークポイントの設定
C ・・・・・・・・ ブレークポイントと予約コマンドの解除
L ・・・・・・・・ ブレークポイントと予約コマンドの一覧表示
X ・・・・・・・・ すべてのラベル(変数)名の一覧表示
N ・・・・・・・・ 16 進数、10 進数、2 進数の対応表示
RS ・・・・・・ プログラムをはじめの状態に戻す
Q ・・・・・・・・ デバッガの終了
H ・・・・・・・・ ヘルプ(デバッグコマンドの説明)
※ D、?、V、T、Sの各コマンドは、改行入力だけで続行できます。
デバッグコマンドの一般的な構文は次のとおりです。
<command> [<parameters>...] [AT <pos> [<src-file>] [, <pass-count>]]
R、D、?、E、Vの各コマンドは、「AT」以下を指定して、その実行をプログラムが指定の位置に来るまで保留することが可能です。このように保留されたコマンドを「予約コマンド」と呼ぶことにします。
コマンドを予約する位置 <pos> は、ソース行番号またはラベル名で指定します。複数のソースファイルがある場合は、<pos> に続けてソースファイル名を指定できます。ソースファイル名を省略すると、現在実行が停止している場所が所属するソースファイルが優先的に使用されます。
コマンドを予約すると、以後、Gコマンドでプログラムの実行が指定の位置に来るたびに、そのコマンドが実行されます。
予約コマンドには、パスカウント <pass-count> を指定できます。このような予約コマンドは、最大でパスカウントの回数しか実行されません。
次のように入力すると、ソースファイルの 12 行目が実行される直前に、レジスタ CX の内容が表示されるようになります。
R CX AT 12
LID では一般に 10 進数と 16 進数を入力できます。表記方法は C 言語と同じです。つまり、16 進数を表す場合は、「0xA800」のように先頭に「0x」を付けます。
以下では、デバッグコマンドをアルファベット順にすべて説明します。
ブレークポイントを設定します。パラメータをなにも指定しないときは、現在プログラムが停止している地点にブレークポイントが設定されます。
<位置>には行番号またはラベル名を指定することができます。<位置>を指定すると、そこにブレークポイントが設定されます。<位置>に続けてその行番号またはラベル名の存在するファイルを<ソースファイル名>に指定することができます。<ソースファイル名>を省略した場合は、現在のソースファイルが優先されます。
<パスカウント>には数値を指定できます。その場合、ブレークポイントは指定した回数につき1回だけ機能します。
実行中のプログラムがブレークポイントに遭遇すると、実行を停止して現在のソース行とレジスタ値を表示します。一旦設定されたブレークポイントは、C コマンドで解除されない限り有効です。
例 B 現在の位置にブレークポイントを設定する B 12 12 行目にブレークポイントを設定する B ABC ラベル ABC の位置にブレークポイントを設定する
ブレークポイントや予約コマンドを解除します。パラメータをなにも指定しないときは、現在プログラムが停止している地点に設定されているブレークポイントと予約コマンドをすべて解除します。
<位置>には行番号またはラベル名を指定することができます。<位置>を指定すると、そこに指定されているブレークポイントと予約コマンドをすべて解除します。<位置>続けてその行番号またはラベル名の存在するファイルを<ソースファイル名>にを指定することができます。<ソースファイル名>を省略した場合は、現在のソースファイルが優先されます。
メモリ値を表示します。<メモリ位置>の指定には2とおりの方法があります。
ラベル名を指定します。複数のソースファイルに同名のラベルがある場合は、続けてソースファイル名を指定して区別することができます。
「<セグメント>:<オフセット>」の形式で指定します。<セグメント>と<オフセット>は 16 ビットレジスタ名か数値です。「<セグメント>:」の部分は省略可能で、その場合は DS レジスタの値が<セグメント>値になります。実際に表示されるメモリ内容のアドレス値は、「<セグメント>×16+<オフセット>」になります。
+ または - 演算子も使用できます。
<タイプ>には次のいずれかを指定します。
X1, X2, X4, X8, X10 |
16 進数 |
I1, I2, I4 |
符号付き 10 進数 |
U1, U2, U4 |
符号なし 10 進数 |
英文字の部分は小文字でもかまいません。数値の部分はメモリ値のバイト数を表します。たとえばタイプ「U2」は、「2 バイトの符号なし 10 進数」を意味します。
タイプ「X1」、つまり 1 バイト 16 進数として表示する場合は、併せてメモリ値のキャラクタ表示を行います。<タイプ>の指定を省略すると、ラベルならそのデフォルトのタイプで、そうでなければタイプ「X1」で、表示されます。
<表示個数>は、表示するメモリ値の個数です。省略した場合はデバッガが適切な個数を決めます。
例 D MSG ラベル MSG 以降のメモリ値を表示する D 0xA800:0x20 A800h:20h 以降のメモリ値を表示する D CS:IP+2 CS:IP + 2 以降のメモリ値を表示する D 10,X2 DS:10 以降のメモリ値をタイプ X2 で表示する D ES:0,,20 ES:0 以降のメモリ値を 20 個表示する
? <メモリ位置> [, <タイプ> [, <表示個数>]]
Dコマンドと同じですが、メモリ値のデフォルトの表示個数が 1 個である点が異なります。
E <メモリ位置>, <データ> ...
メモリ値を変更します。
<メモリ位置>はDコマンドの場合と同じ要領で指定します。
<データ>はメモリに代入する数値または文字列です。数値の場合は、空白で区切っていくつでも指定することができます。
このコマンドには、データのタイプによって次のような種類があります。
E | デフォルトのタイプで数値を入力します。通常は1バイト単位ですが、<メモリ位置>にラベルが指定されたときはそのラベルのタイプで入力します。 |
EB | 1バイト単位で数値を入力します。 |
EW | 2バイト単位で数値を入力します。 |
ED | 4バイト単位で数値を入力します。 |
EA | 文字列を入力します。 |
G [<位置> [ソースファイル名]]
現在地点から通常どおりの実行を行ます。
<位置>には行番号またはラベル名が指定できます。<位置>を指定した場合は、実行中にその地点に到達すると停止します。<位置>に何も指定しないときは、プログラムが終了するまで停止しません。
<位置>に続けて、その行番号またはラベル名の存在するソースファイルを<ソースファイル名>に指定することができます。<ソースファイル名>を省略した場合は、現在のソースファイルが優先されます。
なお、実行中にブレークポイントに遭遇した場合は、そこで停止します。
例 G 実行する G 12 12 行目まで実行する G ABC ラベル ABC まで実行する
H
すべてのデバッグコマンドと主な構文を表示します。
L
現在設定されているブレークポイントと予約コマンドのすべてを一覧表示します。
N <数値>
指定の数値を 16 進数、10 進数、2 進数のそれぞれの表記方法で表示します。
Q
デバッガを終了して MS-DOS に戻ります。
R [<レジスタ名>[、<数値>]]
レジスタ値を表示または変更します。
<レジスタ名>以下を指定しないと、すべてのレジスタの値を表示します。<レジスタ名>だけを指定した場合、そのレジスタの値を表示します。<レジスタ名>に指定できる名前は、デフォルトでは AX, BX, CX, DX, SI, DI, BP, SP, FL, IP, DS, ES, SS, CS のいずれかです。デバッグオプション/32 を指定している場合はさらに、EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EFL, FS, GS も指定できます。
<数値>を指定するとレジスタにその値を代入します。<数値>には 10 進数または 16 進数が指定できます(Dコマンド参照)。
例 R すべてのレジスタを表示する R AX AX レジスタを表示する R FL フラグレジスタを表示する R ESI, 0x10 レジスタ ESI に値 10h を代入する
RS
プログラムを始めから新たに実行します。プログラムの状態はデバッガを起動したときと同じになりますが、設定されているブレークポイントと予約コマンドはそのまま残ります。
S
ステップ実行を行います。次に説明するトレースとほとんど同じですが、このコマンドは CALL 命令があるとその次に並ぶ命令まで停止せず、サブルーチン中はいっきに実行します。
T [<トレース数>]
トレース実行を行います。次の命令を一つだけ実行して停止し、ソース行とレジスタ値を表示します。ただし、次の命令がデバッグ用にアセンブルされていない場合は、デバッグ用にアセンブルされた命令までいっきに実行してから停止します。<トレース数>を指定すると、その数だけ命令を実行してから停止します。
V [[+|-] <先頭行> [<ソースファイル名>]] [, <表示行数>]
ソース行を表示します。「V」の後に何もパラメータを指定しなければ、現在プログラムが停止している地点の 2 行前から 12 行分が表示されます。
<先頭行>と<ソースファイル名>には、表示させたい部分の先頭の行番号とそのソースファイル名を指定することができます。<ソースファイル名>を省略した場合は、現在のソースファイルが優先されます。
<先頭行>の前に「+」または「−」を付けた場合は、<先頭行>の値は現在プログラムが停止している行からのオフセットと見なされます。
<先頭行>とその付随パラメータを省略すると、「-2」を指定したと見なします。
<表示行数>では何行分の表示を行うのか指定できます。省略した場合は 12 行分表示します。
例 V 2 行前から 12 行分を表示する V 20 2 行前から 20 行分を表示する V 1 HELLO.ASM HELLO.ASM の 1 行目から 12 行分を表示する
X
デバッガの認識するすべてのラベル(変数)を一覧表示します。