19.2.6.3 Точки останова в исходном коде

Все точки останова в определении забываются каждый раз, когда вы переинструментируете его. Если вы хотите создать точку останова, которая не будет забыта, вы можете написать точку останова в исходном коде, которая представляет собой просто вызов функции edebug в вашем исходном коде. Разумеется, вы можете сделать такой вызов условным. Например, в функции fac вы можете вставить первую строку, как показано ниже, чтобы остановиться, когда аргумент достигнет нуля:

(defun fac (n)
  (if (= n 0) (edebug))
  (if (< 0 n)
      (* n (fac (1- n)))
    1))

Когда определение fac инструментируется и функция вызывается, вызов edebug действует как точка останова. В зависимости от режима выполнения Edebug останавливается или приостанавливается в этой точке.

Если при вызове edebug не выполняется инструментированный код, эта функция вызывает debug.