Edebugでは、デバッグ対象のプログラムを実行するための複数の実行モードが用意されています。これらの選択肢をEdebug実行モードと呼びます。メジャーモードやマイナーモードと混同しないようご注意ください。現在のEdebug実行モードによって、Edebugが停止するまでどこまで実行を継続するか(例えば、各停止ポイントで停止するのか、あるいは次のブレークポイントまで継続するのか)、および停止前に評価の進捗状況をどの程度表示するかが決まります。
通常、Edebug実行モードは、プログラムを特定のモードで続行するためのコマンドを入力することで指定します。以下にこれらのコマンドの一覧を示します。Sを除くすべてのコマンドは、少なくとも一定の距離までプログラムの実行を再開します。
停止: プログラムの実行をこれ以上行わず、さらなる Edebug コマンド (edebug-stop) を待機してください。
ステップ:次に遭遇する停止地点(edebug-step-mode)で停止する。
次:式 (edebug-next-mode) の後に現れる次の停止点で停止します。また、Jumping の edebug-forward-sexp も参照してください。
トレース: 各Edebug停止ポイント (edebug-trace-mode)
で一時停止(通常は1秒)。
高速トレース:各停止地点で表示を更新するが、実際には一時停止しない (edebug-Trace-fast-mode)。
Go: 次のブレークポイント (edebug-go-mode) まで実行します。Edebug ブレークポイントを参照してください。
続行:各ブレークポイントで1秒間一時停止し、その後続行する (edebug-continue-mode)。
Rapid continue: 各ブレークポイントにポイントを移動させるが、一時停止はしない (edebug-Continue-fast-mode)。
ノンストップで実行:ブレークポイント (edebug-Go-nonstop-mode)
は無視されます。S や任意の編集コマンドを入力すれば、引き続きプログラムを停止できます。
一般的に、上記のリストの前半にある実行モードは、後半のモードに比べてプログラムの動作が遅かったり、より早く停止したりします。
新しいEdebugレベルに入ると、通常、Edebugは最初に検出したインストルメンテーション済み関数で停止します。ブレークポイントでのみ停止させたい場合や、全く停止させたくない場合(例えばカバレッジデータを収集する場合など)は、edebug-initial-modeの値をデフォルトのstepからgo、Go-nonstop、またはその他の値に変更してください(Edebug Optionsを参照)。これはC-x
C-a C-m (edebug-set-initial-mode)を使用することで簡単に行えます:
C-x C-a C-m にバインドされたこのコマンドは、edebug-initial-mode
を設定します。モードを指定するためのキーの入力が求められます。上記に挙げた8つのキーのいずれかを入力すると、対応するモードが設定されます。
なお、例えば1つのコマンドから計測対象関数が複数回呼び出される場合など、同じEdebugレベルに複数回再進入することがあります。
実行中またはトレース中に、任意のEdebugコマンドを入力することで実行を中断できます。Edebugは次の停止点でプログラムを停止し、入力したコマンドを実行します。例えば、実行中にtと入力すると、次の停止点でトレースモードに切り替わります。また、Sを使用すれば、他に何も操作することなく実行を停止できます。
関数が入力を読み取る場合、実行を中断させるつもりで入力した文字が、代わりに関数によって読み取られてしまうことがあります。プログラムがいつ入力を必要とするかに注意を払うことで、こうした意図しない結果を避けることができます。
本セクションのコマンドを含むキーボードマクロは、完全には動作しません。Edebugから終了してプログラムを再開すると、キーボードマクロの追跡が途切れてしまいます。これを修正するのは容易ではありません。また、Edebug外でキーボードマクロを定義または実行しても、Edebug内のコマンドには影響しません。これは通常、利点となります。Edebugオプションのedebug-continue-kbd-macroオプションも参照してください。
このオプションでは、トレースモードまたは継続モードにおける実行ステップ間の待機時間を秒単位で指定します。デフォルトは1秒です。