Hi,
I found that when I stop on a breakpoint set with sldb-break-on-return, I am often interested in inspecting the return value. That is printed in the sldb buffer, but not inspectable.
Currently I am using the following modifications to signal-breakpoint in the CMUCL case, which make en entry in the breakpoint condition. Then, inspecting the condition yields the information I'm interested in. This is not very beautiful, and it only works with CMUCL, but in case someone can make use of it...
later, Utz ----- Index: swank-cmucl.lisp =================================================================== RCS file: /project/slime/cvsroot/slime/swank-cmucl.lisp,v retrieving revision 1.136 diff -u -r1.136 swank-cmucl.lisp --- swank-cmucl.lisp 13 Jan 2005 23:17:02 -0000 1.136 +++ swank-cmucl.lisp 18 Jan 2005 12:29:19 -0000 @@ -1727,7 +1727,8 @@ (c::compiled-debug-function-returns cdfun)))
(define-condition breakpoint (simple-condition) - ((message :initarg :message :reader breakpoint.message)) + ((message :initarg :message :reader breakpoint.message) + (values :initarg :values :reader breakpoint.values)) (:report (lambda (c stream) (princ (breakpoint.message c) stream))))
(defimplementation condition-extras ((c breakpoint)) @@ -1740,13 +1741,18 @@ (flet ((brk (fstring &rest args) (let ((msg (apply #'format nil fstring args)) (debug:*stack-top-hint* frame)) - (break 'breakpoint :message msg)))) + (break 'breakpoint :message msg))) + (brk-with-values (values fstring &rest args) + (let ((msg (apply #'format nil fstring args)) + (debug:*stack-top-hint* frame)) + (break 'breakpoint :values values :message msg))) ) (with-struct (di::breakpoint- kind what) breakpoint (case kind (:code-location (case (di:code-location-kind what) ((:single-value-return :known-return :unknown-return) - (brk "Return value: ~{~S ~}" (breakpoint-values breakpoint))) + (brk-with-values (breakpoint-values breakpoint) + "Return value: ~{~S ~}" (breakpoint-values breakpoint))) (t (brk "Breakpoint: ~S ~S" (di:code-location-kind what) -----