sb-debug:arg doesn't work in TRACE :condition
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
reported by enn in #lisp:
Manual says: ":condition, :break and :print forms are evaluated in a context which mocks up the lexical environment of the called function, so that sb-debug:var and sb-debug:arg can be used. "
(defun foo (a) a)
(trace foo :condition (eql (sb-debug:arg 0) 1))
(foo 0)
=>
debugger invoked on a UNBOUND-VARIABLE in thread
#<THREAD "main thread" RUNNING {10039CE903}>:
The variable SB-DEBUG::ARG-LIST is unbound.
...
0: ((LAMBDA ()))
1: ((LAMBDA (SB-DEBUG::FRAME) :IN SB-DEBUG:
2: ((LAMBDA (SB-DEBUG::FRAME SB-DEBUG::BPT &REST SB-DEBUG::ARGS) :IN SB-DEBUG:
3: (SB-DEBUG:
4: (SB-INT:
on sbcl 1.2.2.79 x8664 linux, but works as expected (traces only when 1 is passed to foo) on 1.1.14.49 x8664 linux and 1.1.13.24 x86 linux
Changed in sbcl: | |
status: | Fix Committed → Fix Released |
broken by https:/ /sourceforge. net/p/sbcl/ sbcl/ci/ c4901564467e583 31fb0ad003970bb bdec6908b2