elisp: Source Breakpoints

 
 17.2.6.3 Source Breakpoints
 ...........................
 
 All breakpoints in a definition are forgotten each time you reinstrument
 it.  If you wish to make a breakpoint that won’t be forgotten, you can
 write a “source breakpoint”, which is simply a call to the function
 ‘edebug’ in your source code.  You can, of course, make such a call
 conditional.  For example, in the ‘fac’ function, you can insert the
 first line as shown below, to stop when the argument reaches zero:
 
      (defun fac (n)
        (if (= n 0) (edebug))
        (if (< 0 n)
            (* n (fac (1- n)))
          1))
 
    When the ‘fac’ definition is instrumented and the function is called,
 the call to ‘edebug’ acts as a breakpoint.  Depending on the execution
 mode, Edebug stops or pauses there.
 
    If no instrumented code is being executed when ‘edebug’ is called,
 that function calls ‘debug’.