Next: , Previous: Instrumenting, Up: Edebug


17.2.3 edebugの実行モード

edebugには読者がデバッグしているプログラムを実行するための 実行モードが複数あります。 これらをedebugの実行モードと呼びます。 これらをメジャーモードやマイナモードと混同しないでください。 edebugの実行モードは、停止するまでにどの程度edebugが実行を継続するか、 たとえば、各停止位置で停止するのかつぎのブレークポイントまで継続するのか、 また、停止するまでに評価の進行状況をどの程度edebugが表示するのかを 決定します。

通常、あるモードにおいて、 プログラムを継続するコマンドを打つことでedebugの実行モードを指定します。 以下にそれらのコマンドの一覧を示します。 Sを除くすべてのコマンドは、 少なくともある程度プログラムの実行を再開します。

S
停止: プログラムをいっさい実行せずに、 edebugコマンドの入力を待つ(edebug-stop)。
<SPC>
ステップ実行: つぎに出会う停止位置で止まる(edebug-step-mode)。
n
つぎ: 式のうしろでつぎに出会う停止位置で止まる (edebug-next-mode)。 Edebug Miscedebug-forward-sexpも参照。
t
トレース: edebugの各停止位置で1秒間休止する (edebug-trace-mode)。
T
高速トレース: 各停止位置で表示を更新するが休止しない (edebug-Trace-fast-mode)。
g
実行: つぎのブレークポイントまで実行する (edebug-go-mode)。 see Breakpoints
c
継続: 各ブレークポイントで1秒間休止してから継続する (edebug-continue-mode)。
C
高速継続: 各ブレークポイントへポイントを移動するが休止しない (edebug-Continue-fast-mode)。
G
非停止実行: ブレークポイントを無視する (edebug-Go-nonstop-mode)。 Sや編集コマンドを打てば停止できる。

一般に、上記一覧の上にある実行モードほど下にあるものに比べると プログラムをゆっくり実行、つまり、早く停止します。

実行中やトレース中には、edebugコマンドをなにか打てば実行に割り込めます。 edebugはつぎの停止位置でプログラムを止め、 読者が打ったコマンドを実行します。 たとえば、実行中にtを打てば、つぎの停止位置でトレースモードに 切り替わります。 単に実行を停止するにはSを使います。

読者の関数が入力を読み取る場合、実行に割り込むつもりで打った文字を 関数が読み取ってしまうかもしれません。 読者のプログラムがいつ入力するかに注意していれば、 このような意図しない結果を避けることができます。

本節で述べたコマンドを含むキーボードマクロは動作しません。 つまり、プログラムを再開するためにedebugから抜けると キーボードマクロの制御を失ってしまいます。 これを修正するのは簡単ではありません。 また、edebugの外側でキーボードマクロを定義したり実行しても、 edebug内のコマンドにはなんの影響もありません。 これは普通は利点です。 しかし、オプションedebug-continue-kbd-macro (see Edebug Options)も参照してください。

edebugの新たなレベルに入ると、変数edebug-initial-modeの値を 実行モードの初期値とします。 デフォルトでは、これはステップ実行モードを指定します。 処置した関数を1つのコマンドから複数回呼び出すなどして edebugの同一レベルに再度入ることができることに注意してください。