每次重新插桩一个定义时,其中的所有断点都会被清除。
如果你希望设置不会被清除的断点,可以编写**源码断点**:
即在源码中直接调用函数 edebug。
当然你可以将该调用写成条件形式。
例如在 fac 函数中,可以插入下面一行,使参数为 0 时暂停:
(defun fac (n)
(if (= n 0) (edebug))
(if (< 0 n)
(* n (fac (1- n)))
1))
当 fac 定义被插桩且函数被调用时,对 edebug 的调用就相当于一个断点。
根据运行模式,Edebug 会在该处停止或暂停。
如果调用 edebug 时没有正在执行被插桩的代码,该函数会转而调用 debug。