定義内のすべてのbreakpointは、それをインストルメントするたびに失われます。breakpointが失われないようにしたければソースコード内で単に関数edebug
を呼び出すソースbreakpoint(source
breakpoint)を記述できます。もちろんそのような呼び出しを条件付きすることにもできます。たとえばfac
関数内に以下のような行を1行目に挿入して、引数が0になったときストップさせることができます:
(defun fac (n) (if (= n 0) (edebug)) (if (< 0 n) (* n (fac (1- n))) 1))
fac
の定義がインストルメントされて呼び出されたとき、edebug
呼び出しはbreakpointとして振る舞います。実行モードに応じてEdebugはそこでストップまたはpauseします。
edebug
が呼び出されたときにインストルメント済みのコードが実行されていなければ、この関数はdebug
を呼び出します。