next up previous contents
Next: 3.10 Function Tracing Up: 3.9 Breakpoint Commands Previous: 3.9 Breakpoint Commands

3.9.1 Breakpoint Example

Consider this definition of the factorial function:

(defun ! (n)
  (if (zerop n)
      1
      (* n (! (1- n)))))
This debugger session demonstrates the use of breakpoints:
common-lisp-user> (break) ; Invoke debugger

Break

Restarts: 0: [CONTINUE] Return from BREAK. 1: [ABORT ] Return to Top-Level.

Debug (type H for help)

(INTERACTIVE-EVAL (BREAK)) 0] ll #'! 0: #'(LAMBDA (N) (BLOCK ! (IF # 1 #))) 1: (ZEROP N) 2: (* N (! (1- N))) 3: (1- N) 4: (! (1- N)) 5: (* N (! (1- N))) 6: #'(LAMBDA (N) (BLOCK ! (IF # 1 #))) 0] br 2 (* N (! (1- N))) 1: 2 in ! Added. 0] q

common-lisp-user> (! 10) ; Call the function

*Breakpoint hit*

Restarts: 0: [CONTINUE] Return from BREAK. 1: [ABORT ] Return to Top-Level.

Debug (type H for help)

(! 10) ; We are now in first call (arg 10) before the multiply Source: (* N (! (1- N))) 3] st

*Step*

(! 10) ; We have finished evaluation of (1- n) Source: (1- N) 3] st

*Breakpoint hit*

Restarts: 0: [CONTINUE] Return from BREAK. 1: [ABORT ] Return to Top-Level.

Debug (type H for help)

(! 9) ; We hit the breakpoint in the recursive call Source: (* N (! (1- N))) 3]



Raymond Toy
Mon Jul 14 09:11:27 EDT 1997