X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Fdebug.lisp;h=b7c1306ece30b26c2a71ec0214a20127f3a7e9bd;hb=bfe145acc01eb7a43790173db4f08610ae9cb07a;hp=632ddc4e0a73afb3f55a1db9ad829db49aabfdad;hpb=308a685dde769587dd17b20531645c5581e5fc7f;p=sbcl.git diff --git a/src/code/debug.lisp b/src/code/debug.lisp index 632ddc4..b7c1306 100644 --- a/src/code/debug.lisp +++ b/src/code/debug.lisp @@ -703,6 +703,25 @@ Other commands: (*package* original-package) (*print-pretty* original-print-pretty) (*print-readably* nil) + ;; Clear the circularity machinery to try to to reduce the + ;; pain from sharing the circularity table across all + ;; streams; if these are not rebound here, then setting + ;; *PRINT-CIRCLE* within the debugger when debugging in a + ;; state where something circular was being printed (e.g., + ;; because the debugger was entered on an error in a + ;; PRINT-OBJECT method) makes a hopeless mess. Binding them + ;; here does seem somewhat ugly because it makes it more + ;; difficult to debug the printing-of-circularities code + ;; itself; however, as far as I (WHN, 2004-05-29) can see, + ;; that's almost entirely academic as long as there's one + ;; shared *C-H-T* for all streams (i.e., it's already + ;; unreasonably difficult to debug print-circle machinery + ;; given the buggy crosstalk between the debugger streams + ;; and the stream you're trying to watch), and any fix for + ;; that buggy arrangement will likely let this hack go away + ;; naturally. + (sb!impl::*circularity-hash-table* . nil) + (sb!impl::*circularity-counter* . nil) ;; These rebindings are now (as of early 2004) deprecated, ;; with the new *PRINT-VAR-ALIST* mechanism preferred. (*print-length* *debug-print-length*) @@ -710,11 +729,12 @@ Other commands: (*readtable* *debug-readtable*)) (progv ;; (Why NREVERSE? PROGV makes the later entries have - ;; precedence over the earlier entries. *PRINT-VAR-ALIST* - ;; is called an alist, so it's expected that its earlier - ;; entries have precedence. And the earlier-has-precedence - ;; behavior is mostly more convenient, so that programmers - ;; can use PUSH or LIST* to customize *PRINT-VAR-ALIST*.) + ;; precedence over the earlier entries. + ;; *DEBUG-PRINT-VARIABLE-ALIST* is called an alist, so it's + ;; expected that its earlier entries have precedence. And + ;; the earlier-has-precedence behavior is mostly more + ;; convenient, so that programmers can use PUSH or LIST* to + ;; customize *DEBUG-PRINT-VARIABLE-ALIST*.) (nreverse (mapcar #'car *debug-print-variable-alist*)) (nreverse (mapcar #'cdr *debug-print-variable-alist*)) (apply fun rest))))))