From: William Harold Newman Date: Tue, 31 Oct 2000 19:40:14 +0000 (+0000) Subject: 0.6.8.3: added CODE-COMPONENT slot for NO-DEBUG-INFO condition X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=7e1f6a02db322634078e6cec7bf92bcd060db0fe;p=sbcl.git 0.6.8.3: added CODE-COMPONENT slot for NO-DEBUG-INFO condition --- diff --git a/BUGS b/BUGS index 71f2d77..411b75c 100644 --- a/BUGS +++ b/BUGS @@ -751,3 +751,10 @@ Error in function C::GET-LAMBDA-TO-COMPILE: 60: The debugger LIST-LOCATIONS command doesn't work properly. + +61: + Compiling and loading + (DEFUN FAIL (X) (THROW 'FAIL-TAG X)) + (FAIL 12) + then requesting a BACKTRACE at the debugger prompt gives no information + about where in the user program the problem occurred. diff --git a/NEWS b/NEWS index 294c656..46d47c2 100644 --- a/NEWS +++ b/NEWS @@ -529,11 +529,6 @@ changes in sbcl-0.6.9 relative to sbcl-0.6.8: * The debugger now handles errors which arise when trying to print *DEBUG-CONDITION*, so that it's less likely to fall into infinite regress. -?? The debugger is now better at walking down through the control stack - frames generated by signal handlers. In particular, compiling and loading - (DEFUN FAIL (X) (THROW 'FAIL-TAG X)) - (FAIL 12) - then requesting a BACKTRACE at the debugger prompt now gives useful output. ?? signal handling reliability ?? fixed some bugs mentioned in the man page: ?? DEFUN-vs.-DECLAIM diff --git a/doc/cmucl/cmu-user/cmu-user.tex b/doc/cmucl/cmu-user/cmu-user.tex index fb51948..8623c0d 100644 --- a/doc/cmucl/cmu-user/cmu-user.tex +++ b/doc/cmucl/cmu-user/cmu-user.tex @@ -12610,7 +12610,7 @@ from this condition. \end{deftp} -\begin{deftp}{Condition}{unhandled-condition}{} +\begin{deftp}{Condition}{unhandled-debug-condition}{} This error results from a signalled \code{debug-condition} occurring without anyone handling it. \end{deftp} diff --git a/package-data-list.lisp-expr b/package-data-list.lisp-expr index bd380bb..eda9d8d 100644 --- a/package-data-list.lisp-expr +++ b/package-data-list.lisp-expr @@ -397,7 +397,7 @@ like *STACK-TOP-HINT*" "LAMBDA-LIST-UNAVAILABLE" "MAKE-BREAKPOINT" "NO-DEBUG-BLOCKS" "NO-DEBUG-FUNCTION-RETURNS" "NO-DEBUG-INFO" "PREPROCESS-FOR-EVAL" "RETURN-FROM-FRAME" "SOURCE-PATH-CONTEXT" - "TOP-FRAME" "UNHANDLED-CONDITION" "UNKNOWN-CODE-LOCATION" + "TOP-FRAME" "UNHANDLED-DEBUG-CONDITION" "UNKNOWN-CODE-LOCATION" "UNKNOWN-CODE-LOCATION-P" "UNKNOWN-DEBUG-VAR" "CODE-LOCATION-KIND" "FLUSH-FRAMES-ABOVE")) diff --git a/src/code/debug-int.lisp b/src/code/debug-int.lisp index f4b2044..281128e 100644 --- a/src/code/debug-int.lisp +++ b/src/code/debug-int.lisp @@ -42,13 +42,16 @@ that must be handled, but they are not programmer errors.")) (define-condition no-debug-info (debug-condition) - () + ((code-component :reader no-debug-info-code-component + :initarg :code-component)) #!+sb-doc (:documentation "There is no usable debugging information available.") (:report (lambda (condition stream) (declare (ignore condition)) (fresh-line stream) - (write-line "no debugging information available" stream)))) + (format stream + "no debug information available for ~S~%" + (no-debug-info-code-component condition))))) (define-condition no-debug-function-returns (debug-condition) ((debug-function :reader no-debug-function-returns-debug-function @@ -127,11 +130,11 @@ "All programmer errors from using the interface for building debugging tools inherit from this type.")) -(define-condition unhandled-condition (debug-error) - ((condition :reader unhandled-condition-condition :initarg :condition)) +(define-condition unhandled-debug-condition (debug-error) + ((condition :reader unhandled-debug-condition-condition :initarg :condition)) (:report (lambda (condition stream) (format stream "~&unhandled DEBUG-CONDITION:~%~A" - (unhandled-condition-condition condition))))) + (unhandled-debug-condition-condition condition))))) (define-condition unknown-code-location (debug-error) ((code-location :reader unknown-code-location-code-location @@ -162,20 +165,21 @@ (frame :reader frame-function-mismatch-frame :initarg :frame) (form :reader frame-function-mismatch-form :initarg :form)) (:report (lambda (condition stream) - (format stream - "~&Form was preprocessed for ~S,~% but called on ~S:~% ~S" - (frame-function-mismatch-code-location condition) - (frame-function-mismatch-frame condition) - (frame-function-mismatch-form condition))))) - -;;; This signals debug-conditions. If they go unhandled, then signal an -;;; unhandled-condition error. + (format + stream + "~&Form was preprocessed for ~S,~% but called on ~S:~% ~S" + (frame-function-mismatch-code-location condition) + (frame-function-mismatch-frame condition) + (frame-function-mismatch-form condition))))) + +;;; This signals debug-conditions. If they go unhandled, then signal +;;; an UNHANDLED-DEBUG-CONDITION error. ;;; ;;; ??? Get SIGNAL in the right package! (defmacro debug-signal (datum &rest arguments) `(let ((condition (make-condition ,datum ,@arguments))) (signal condition) - (error 'unhandled-condition :condition condition))) + (error 'unhandled-debug-condition :condition condition))) ;;;; structures ;;;; @@ -1187,7 +1191,7 @@ (let ((info (%code-debug-info component))) (cond ((not info) - (debug-signal 'no-debug-info)) + (debug-signal 'no-debug-info :code-component component)) ((eq info :bogus-lra) (make-bogus-debug-function "function end breakpoint")) (t diff --git a/version.lisp-expr b/version.lisp-expr index 46c6fb7..8409496 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -15,4 +15,4 @@ ;;; versions, and a string a la "0.6.5.12" is used for versions which ;;; aren't released but correspond only to CVS tags or snapshots. -"0.6.8.2" +"0.6.8.3"