Go to the first, previous, next, last section, table of contents.

ステップ実行

ステップ実行とは、あなたのプログラムの動作における最小時間を 設定することを意味し、制御はデバッガが1行分のマシン命令を実行した後に、 自動的に返ってきます。ステップ実行時にブレークポイントは有効であり、 プログラムはステップ処理用のコマンドがどのように遠くまで処理するよう 指定していても、そこで停止します。

step
異なった行にプログラムが達するまで処理を継続し、プログラムを停止 させた後にデバッガに制御を戻します。このコマンドの省略形は `s' です。 このコマンドは、デバッギング情報がない関数へ制御が移る時にも利用 することができます。そのようなケースでは、処理の実行は、制御が 異なった関数へと移る時か、その関数からリターンするまでの間、先に 進みます。引数に示される回数だけ、この動作を繰り返します。
step count
`step' として処理を継続しますが、count 回数だけそれを 繰り返します。もし、ブレークポイントに達したり、count 分の ステップ処理中にシグナルが発生した場合、ステップ実行はただちに 停止します。
next
`step' に似ていますが、行にあるコード上の関数コールは停止しないで 実行されます。実行が停止するのは、`next' コマンドが与えられた同一 スタックレベルの、異なった行にあるコードに達した時です。このコマンドの 省略形は `n' です。 引数は、`step' と同様リピート回数を表します。 デバッギング情報がない関数への `next'`step' と同じように 動作しますが、その関数のコードに表れる任意の関数コールは停止すること なく実行されます。
finish
選択されているスタックフレームからリターンするまで (又は、致命的な シグナルやブレークポイントのような、他の要因によって停止するまで)、 処理を継続します。(もし、存在するのなら) 選択されていたスタック フレームからのリターン値を表示します。 このコマンドを `return' コマンドと対比してみて 下さい(see section 関数からのリターン)。
until
このコマンドは、ループ内での単一ステップ処理の多くの繰り返しを回避 するために使われます。このコマンドは、`until' がジャンプに 出会った時、プログラムカウンタがジャンプアドレスより大きくなるまで 自動的にプログラムの実行を継続するという部分を除けば `next' コマンドに似ています。 これは、あなたがこのコマンドを使ってステップ実行した後で、ループの 終端に達したとき、`until' はループから抜け出すまで実行を継続 させるということを意味します。それとは対照的に、`next' コマンドは ループの終端に達したならば、単にループの開始に戻り、あなたに次の巡回を ステップ処理させることを強制します。 `until' はまた、カレントのスタックフレームから抜け出そうと 試みられた時にもプログラムを停止させます。 `until' は、ソース上の行の順番が実際の実行順番とマッチしない時に、 何か直感に反する結果を生み出してしまいます。例えば、典型的なC言語の for-ループでは、for-文の3番目の ステートメント (ループステップ式) は ループ本体のステートメントの後に実行されますが、記述上では、ループ 本体の前に書かれています。従って `until' コマンドは、この式へと 至った場合、ループの開始部分へとステップバックするでしょう。 しかしながら、それは実際そのように動作していないので、実際のマシン コードに置き換えないように。 引数なしの `until' は単一命令のステップ実行を意味することに注意 して下さい。このため、引数を指定した `until' より遅くなります。
until location
指定された位置にプログラムが達するか、カレント (最深部) のスタック フレームからリターンするまで、実行を継続します。この形態のコマンドは ブレークポイントを使っているので、引数なしの `until' よりも高速 です。
stepi
si
単一マシン命令を実行し、プログラムを停止させてデバッガに戻ります。 このコマンドにおいて、マシン命令をステップ実行中に `display/i $pc' を使うと、しばしば有効です。これは、停止時に、次に実行される命令を 自動的に表示します。See section 自動的な表示。 引数は、`step' のように繰り返し回数を表します。
nexti
ni
単一マシン命令を実行しますが、サブルーチンがコールされた場合、 サブルーチンからリターンするまで実行を継続します。 引数は、`next' 同様、繰り返し回数を表します。

ステップ実行に使われる典型的なテクニックとして、 ブレークポイント (see section ブレークポイント) をウソがあると思われるような 問題のある関数の先頭やプログラムのセクションに設定し、怪しいと思う エリアを1ステップずつ実行し、問題が発生するまで、興味のある変数を 調査する、というものがあります。

`cont' コマンドは、ステップ実行後、次のブレークポイントやシグナル まで処理を再実行させるために使うことができます。


Go to the first, previous, next, last section, table of contents.