Next: , Previous: , Up: Edebug   [Contents][Index]


17.2.3 Edebugの実行モード

Edebugはデバッグするプログラムの実行にたいして、いくつかの実行モードをサポートします。これらの実行モードをEdebug実行モード(Edebug execution modes)と呼びます。これらをメジャーモードやマイナーモードと混同しないでください。カレントのEdebug実行モードは、プログラムをストップする前にEdebugがどれだけ実行を継続するか — たとえばストップポイントごとにストップ、あるいは次のbreakpointまで継続など — 、およびストップする前にEdebugがどれだけ進捗を表示するかを決定します。

Edebug実行モードは、通常はある特定のモードでプログラムを継続させるコマンドをタイプすることによって指定します。以下はそれらのコマンドのテーブルです。S以外のコマンドはプログラムの実行を再開して、少なくともある長さの間だけは実行を継続します。

S

Stop(ストップ): これ以上プログラムを実行しないでEdebugのコマンドを待つ(edebug-stop)。

SPC

Step(ステップ): 次のストップポイントでストップする(edebug-step-mode)。

n

Next(次へ): 式の後にある次のストップポイントでストップする(edebug-next-mode)。Jumpingedebug-forward-sexpも参照のこと。

t

Trace(トレース): Edebugのストップポイントごとにpause(通常は1秒)する(edebug-trace-mode)。

T

Rapid trace(高速でトレース):ストップポイントごとに表示を更新するが、実際にpauseはしない(edebug-Trace-fast-mode)。

g

Go(進む): 次のbreakpointまで実行する(edebug-go-mode)。Breakpointsを参照のこと。

c

Continue(継続): breakpointごとにpauseしてから継続する(edebug-continue-mode)。

C

Rapid continue(高速で継続): ポイントを各breakpointへ移動するがpauseしない(edebug-Continue-fast-mode)。

G

Go non-stop(ストップせず進む): breakpointを無視する(edebug-Go-nonstop-mode)。まだSやその他の編集コマンドでプログラムをストップするのは可能。

一般的に上記リストの最初のほうにある実行モードは後のほうの実行モードに比べて、プログラムをより低速に実行するか、すぐにストップさせます。

新たなEdebugレベルにエンターしたとき、Edebugは通常は最初に遭遇したインストルメント済みの関数でストップするでしょう。breakpointでのみストップするか、(たとえばカバレッジデータ収集時など)ストップさせないようにするには、edebug-initial-modeの値をデフォルトのstepからgoGo-nonstop、あるいはその他の値に変更してください(Edebug Optionsを参照)。C-x C-a C-m (edebug-set-initial-mode)でこれを容易に行うことができます:

Command: edebug-set-initial-mode

C-x C-a C-mにバインドされるこのコマンドはedebug-initial-modeをセットする。これはモードを示すキーの入力を求める。対応するモードをセットする上述8つのキーのいずれかを入力すること。

たとえば1つのコマンドからインストルメント済みの関数が複数回呼び出されたら、同じEdebugレベルに再エンターするかもしれないことに注意してください。

実行中とトレース中は、任意のEdebugコマンドをタイプすることによって実行をインタラプト(interrupt: 中断、割り込み)できます。Edebugは次のストップポイントでプログラムをストップしてからタイプされたコマンドを実行します。たとえば実行中にtをタイプすると、次のストップポイントでトレースモードに切り替えます。Sを使用すれば他に何も行わずに実行をストップできます。

関数でたまたま読み取り入力が発生した場合には、実行のインタラプトを意図してタイプされた文字は、かわりにその関数により読み取られます。そのプログラムが入力を欲するタイミングに注意を払うことで、そのような意図せぬ結果を避けることができます。

このセクションのコマンドを含むキーボードマクロは、完全には機能しません。プログラムを再開するためにEdebugからexitすると、キーボードマクロの追跡記録は失われます。これに対処するのは簡単ではありません。またEdebug外部でキーボードマクロを定義または実行しても、Edebug内部のコマンドに影響しません。通常これは利点です。Edebug Options内のedebug-continue-kbd-macroオプションも参照してください。

User Option: edebug-sit-for-seconds

このオプションはtraceモードとcontinueモードで実行ステップの間を何秒待つか指定する。デフォルトは1秒。