N: Evaluate the current expression without stepping.
C: Evaluate to finish without stepping.
Q: Abort evaluation.
+ B: Backtrace.
?: Display this message.
")
(defmethod single-step ((condition step-variable-condition))
(format *debug-io* "; ~A => ~S~%"
- (step-condition-form condition)
- (step-condition-result condition)))
+ (step-condition-form condition)
+ (step-condition-result condition)))
(defmethod single-step ((condition step-values-condition))
(let ((values (step-condition-result condition)))
(format *debug-io* "; ~A => ~:[#<no value>~;~{~S~^, ~}~]~%"
- (step-condition-form condition)
+ (step-condition-form condition)
values values)))
(defmethod single-step ((condition step-form-condition))
(let ((line (read-line *debug-io*)))
(if (plusp (length line))
(case (char-upcase (schar line 0))
+ (#\B
+ (backtrace))
(#\Q
(abort condition))
(#\C
(#\?
(write-line *step-help* *debug-io*))))))))
-(defvar *stepper-hook* #'single-step
+(defvar *stepper-hook* 'single-step
#+sb-doc "Customization hook for alternative single-steppers.
*STEPPER-HOOK* is bound to NIL prior to calling the bound function
with the STEP-CONDITION as argument.")
(defun invoke-stepper (condition)
(when (and *stepping* *stepper-hook*)
(let ((hook *stepper-hook*)
- (*stepper-hook* nil))
+ (*stepper-hook* nil))
(funcall hook condition))))
(defmacro step (form)
functions in question have been compiled with sufficient DEBUG policy
to be at least partially steppable."
`(let ((*stepping* t)
- (*step* t))
+ (*step* t))
(declare (optimize (sb-c:insert-step-conditions 0)))
(format t "Single stepping. Type ? for help.~%")
(locally (declare (optimize (sb-c:insert-step-conditions 3)))