0.6.8.3: added CODE-COMPONENT slot for NO-DEBUG-INFO condition
authorWilliam Harold Newman <william.newman@airmail.net>
Tue, 31 Oct 2000 19:40:14 +0000 (19:40 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Tue, 31 Oct 2000 19:40:14 +0000 (19:40 +0000)
BUGS
NEWS
doc/cmucl/cmu-user/cmu-user.tex
package-data-list.lisp-expr
src/code/debug-int.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index 71f2d77..411b75c 100644 (file)
--- 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 (file)
--- 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
index fb51948..8623c0d 100644 (file)
@@ -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}
index bd380bb..eda9d8d 100644 (file)
@@ -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"))
 
index f4b2044..281128e 100644 (file)
     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
    "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
    (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)))
 \f
 ;;;; structures
 ;;;;
   (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
index 46c6fb7..8409496 100644 (file)
@@ -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"