On 12-Dec-07, at 7:23 PM, Juho Snellman wrote:

Jean-Philippe Barrette-LaPierre <jpb@rrette.com> writes:

I'm using sbcl-1.0.12.25-x86-darwin took from http://sbcl.static.net/ 
builds/.
When I evaluate the following code:

(declaim (optimize (speed 0) (space 0) (compilation-speed 0) (debug 3)))

(defun test ()
   (break))

(test)

The "source" command within the debugger returns this:
"Cannot find source localtion for #<COMPILED-CODE-LOCATION (SB- 
C::VARARGS-ENTRY BREAK)>"

Is it a known problem? What am I doing wrong?

You're trying to show the source of BREAK. Assuming your goal was to
show the location of the *call* to BREAK, you need to navigate to the
debugger frame for TEST (with up/down) before using the command.


Sorry, the source of the problem originated with SLIME usage. I tried to send 
a quick example that wouldn't rely on SLIME behavior and I didn't checked
properly what I was doing.

You're right sbcl behaves as it should in that case. It seems in fact to be 
a problem with SLIME. It seems someone has already sent an email
about this problem:

http://common-lisp.net/pipermail/slime-devel/2007-November/006761.html
 
== little part of message ==
I start SBCL by M-m M-x slime

SLIME does start up, I get a lisp prompt and it seems to behave
normally. However, the connection between SBCL and SLIME is rather
shaky.
At some point during working with SBCL, I lose the function parameter
info, I also can't break running code then.
== end of part of message ==

If I load the test file (code above) within slime and I do:
M-x slime
M-x slime-compile-and-load-file

When I enter in the debugger, the "v" command for any of my own stack frame,
it prints:

#<SB-DI::COMPILED-DEBUG-FUN TEST> has no debug-block information.

or

#<SB-DI::COMPILED-DEBUG-FUN TEST> has no debug-block information.

However, if I compile back and load (slime-compile-and-load-file) the file, 
without having specified the action to take for the debugger (Debugger is 
still active), then I can see that the same messages are displayed for 1/10 
of a second, but then "Evaluation aborted" is printed.

I'm using slime-2.0, but slime-cvs (took around the 2007-12-10) does the
 same thing.

Here's the *slime-event* buffer:
(:emacs-rex
 (swank:connection-info)
 nil t 1)
(:indentation-update
 (("with-locked-hash-table" . 1)
  ("with-unlocked-packages" . 1)
  ("with-timeout" . 1)
  ("define-source-context" . 2)
  ("without-package-locks" . 0)
  ("with-unique-names" . 1)
  ("with-float-traps-masked" . 1)
  ("awhen" . 1)
  ("defun-cached" . 2)
  ("prepare-for-fast-read-char" . 1)
  ("dx-flet" . 1)
  ("once-only" . 1)
  ("define-function-name-syntax" . 2)
  ("do-info" . 1)
  ("dx-let" . 1)
  ("dovector" . 1)
  ("collect" . 1)
  ("named-lambda" . 2)
  ("with-rebound-io-syntax" . 0)
  ("prepare-for-fast-read-byte" . 1)
  ...))
(:return
 (:ok
  (:pid 17387 :style :fd-handler :lisp-implementation
(:type "SBCL" :name "sbcl" :version "1.0.12.25")
:machine
(:instance "jean-philippe-barrette-lapierres-computer.local" :type "X86" :version nil)
:features
(:sb-bsd-sockets-addrinfo :asdf :ansi-cl :common-lisp :sbcl :sb-doc :sb-test :sb-ldb :sb-package-locks :sb-unicode :sb-eval :sb-source-locations :ieee-floating-point :x86 :unix :mach-o :bsd :darwin :mach-exception-handler :sb-lutex ...)
:package
(:name "COMMON-LISP-USER" :prompt "CL-USER")))
 1)
(:emacs-rex
 (swank:compile-file-for-emacs "/Users/jpbarrette/Projects/MakeGrapher/test.lisp" t)
 nil t 2)
(:write-string "\n")
(:write-string "; compiling file \"/Users/jpbarrette/Projects/MakeGrapher/test.lisp\" (written 12 DEC 2007 09:08:11 PM):\n\n; /Users/jpbarrette/Projects/MakeGrapher/test.fasl written\n; compilation finished in 0:00:00\ntest2: a 1\ntest: b 1\n")
(:debug 0 1
("break" "   [Condition of type SIMPLE-CONDITION]" nil nil)
(("CONTINUE" "Return from BREAK.")
("ABORT" "Abort SLIME compilation.")
("ABORT-REQUEST" "Abort handling SLIME request.")
("ABORT" "Exit debugger, returning to top level."))
((0 "(BREAK \"break\")")
(1 "(TEST 1)")
(2 "(TEST2 1)")
(3 "(SB-FASL::LOAD-FASL-GROUP #<SB-SYS:FD-STREAM for \"file /Users/jpbarrette/Projects/MakeGrapher/test.fasl\" {11B487B1}>)")
(4 "((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK))")
(5 "(SB-FASL::LOAD-AS-FASL #<SB-SYS:FD-STREAM for \"file /Users/jpbarrette/Projects/MakeGrapher/test.fasl\" {11B487B1}> NIL #<unavailable argument>)")
(6 "(SB-FASL::INTERNAL-LOAD #P\"/Users/jpbarrette/Projects/MakeGrapher/test.fasl\" #P\"/Users/jpbarrette/Projects/MakeGrapher/test.fasl\" :ERROR NIL NIL :BINARY NIL)")
(7 "(SB-FASL::INTERNAL-LOAD #P\"/Users/jpbarrette/Projects/MakeGrapher/test.fasl\" #P\"/Users/jpbarrette/Projects/MakeGrapher/test.fasl\" :ERROR NIL NIL NIL :DEFAULT)")
(8 "(LOAD #P\"/Users/jpbarrette/Projects/MakeGrapher/test.fasl\")")
(9 "((SB-PCL::FAST-METHOD SWANK-BACKEND:SWANK-COMPILE-FILE (T #1=\"#<...>\" . #1#)) #<unused argument> #<unused argument> \"/Users/jpbarrette/Projects/MakeGrapher/test.lisp\" T NIL)")
(10 "(SWANK::MEASURE-TIME-INTERVAL #<CLOSURE (LAMBDA NIL) {119AB815}>)")
(11 "(SWANK::SWANK-COMPILER #<CLOSURE (LAMBDA NIL) {119AB815}>)")
(12 "((LAMBDA NIL))")
(13 "((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-SYNTAX-HOOKS (T)) #<unused argument> #<unused argument> #<CLOSURE (LAMBDA NIL) {119A6DC5}>)")
(14 "(SWANK::CALL-WITH-BUFFER-SYNTAX #<CLOSURE (LAMBDA NIL) {119A6DC5}>)")
(15 "(SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:COMPILE-FILE-FOR-EMACS \"/Users/jpbarrette/Projects/MakeGrapher/test.lisp\" T) #<NULL-LEXENV>)")
(16 "((LAMBDA NIL))")
(17 "((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK (T T)) #<unused argument> #<unused argument> #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA NIL) {119A6C8D}>)")
(18 "((LAMBDA NIL))")
(19 "((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK (T T)) #<unused argument> #<unused argument> #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<FUNCTION (LAMBDA NIL) {11F7E895}>)"))
(2))
(:debug-activate 0 1)
(:emacs-rex
 (swank:frame-source-location-for-emacs 1)
 nil 0 3)
(:return
 (:ok
  (:error "unhandled DEBUG-CONDITION:\n#<SB-DI::COMPILED-DEBUG-FUN TEST> has no debug-block information."))
 3)
(:debug-activate 0 1)
(:emacs-rex
 (swank:frame-source-location-for-emacs 2)
 nil 0 4)
(:return
 (:ok
  (:error "unhandled DEBUG-CONDITION:\n#<SB-DI::COMPILED-DEBUG-FUN TEST2> has no debug-block information."))
 4)
(:debug-activate 0 1)
(:emacs-rex
 (swank:compile-file-for-emacs "/Users/jpbarrette/Projects/MakeGrapher/test.lisp" t)
 nil t 5)
(:write-string "; compiling file \"/Users/jpbarrette/Projects/MakeGrapher/test.lisp\" (written 12 DEC 2007 09:08:11 PM):\n")
(:write-string "\n; /Users/jpbarrette/Projects/MakeGrapher/test.fasl written\n; compilation finished in 0:00:00\nSTYLE-WARNING: redefining TEST in DEFUN\nSTYLE-WARNING: redefining TEST2 in DEFUN\ntest2: a 1\ntest: b 1\n")
(:debug 0 2
("break" "   [Condition of type SIMPLE-CONDITION]" nil nil)
(("CONTINUE" "Return from BREAK.")
("ABORT" "Abort SLIME compilation.")
("ABORT" "Return to sldb level 1.")
("CONTINUE" "Return from BREAK.")
("ABORT" "Abort SLIME compilation.")
("ABORT-REQUEST" "Abort handling SLIME request.")
("ABORT" "Exit debugger, returning to top level."))
((0 "(BREAK \"break\")")
(1 "(TEST 1)")
(2 "(TEST2 1)")
(3 "(SB-FASL::LOAD-FASL-GROUP #<SB-SYS:FD-STREAM for \"file /Users/jpbarrette/Projects/MakeGrapher/test.fasl\" {11BFD571}>)")
(4 "((FLET SB-THREAD::WITH-RECURSIVE-LOCK-THUNK))")
(5 "(SB-FASL::LOAD-AS-FASL #<SB-SYS:FD-STREAM for \"file /Users/jpbarrette/Projects/MakeGrapher/test.fasl\" {11BFD571}> NIL #<unavailable argument>)")
(6 "(SB-FASL::INTERNAL-LOAD #P\"/Users/jpbarrette/Projects/MakeGrapher/test.fasl\" #P\"/Users/jpbarrette/Projects/MakeGrapher/test.fasl\" :ERROR NIL NIL :BINARY NIL)")
(7 "(SB-FASL::INTERNAL-LOAD #P\"/Users/jpbarrette/Projects/MakeGrapher/test.fasl\" #P\"/Users/jpbarrette/Projects/MakeGrapher/test.fasl\" :ERROR NIL NIL NIL :DEFAULT)")
(8 "(LOAD #P\"/Users/jpbarrette/Projects/MakeGrapher/test.fasl\")")
(9 "((SB-PCL::FAST-METHOD SWANK-BACKEND:SWANK-COMPILE-FILE (T #1=\"#<...>\" . #1#)) #<unused argument> #<unused argument> \"/Users/jpbarrette/Projects/MakeGrapher/test.lisp\" T NIL)")
(10 "(SWANK::MEASURE-TIME-INTERVAL #<CLOSURE (LAMBDA NIL) {11BC3FED}>)")
(11 "(SWANK::SWANK-COMPILER #<CLOSURE (LAMBDA NIL) {11BC3FED}>)")
(12 "((LAMBDA NIL))")
(13 "((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-SYNTAX-HOOKS (T)) #<unused argument> #<unused argument> #<CLOSURE (LAMBDA NIL) {11BC3FCD}>)")
(14 "(SWANK::CALL-WITH-BUFFER-SYNTAX #<CLOSURE (LAMBDA NIL) {11BC3FCD}>)")
(15 "(SB-INT:SIMPLE-EVAL-IN-LEXENV (SWANK:COMPILE-FILE-FOR-EMACS \"/Users/jpbarrette/Projects/MakeGrapher/test.lisp\" T) #<NULL-LEXENV>)")
(16 "((LAMBDA NIL))")
(17 "((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK (T T)) #<unused argument> #<unused argument> #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA NIL) {11BC3E95}>)")
(18 "(SWANK::SLDB-LOOP 1)")
(19 "((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGING-ENVIRONMENT (T)) #<unused argument> #<unused argument> #<FUNCTION (LAMBDA NIL) {120F761D}>)"))
(5 2))
(:debug-activate 0 2)
(:emacs-rex
 (swank:frame-source-location-for-emacs 1)
 nil 0 6)
(:debug-condition 0 "#<SB-DI::COMPILED-DEBUG-FUN TEST> has no debug-block information.")
(:return
 (:abort)
 6)
(:debug-activate 0 2)
(:emacs-rex
 (swank:frame-source-location-for-emacs 2)
 nil 0 7)
(:debug-condition 0 "#<SB-DI::COMPILED-DEBUG-FUN TEST2> has no debug-block information.")
(:return
 (:abort)
 7)
(:debug-activate 0 2)


And frankly, I would suggest using the Slime debugger rather than the
built-in one.

-- 
Juho Snellman