slime-inspector-eval:如何获得检查器中的绑定?
问题描述:
长的故事:动机
我有上SORT
或MAPCAR
打破了一些错误,一些(比如说,25)不是列表的CL码。这告诉我我通过它们的数据结构有问题。所以,我把(BREAK)
放在发生错误的地方之前的代码中。它看起来是这样的:slime-inspector-eval:如何获得检查器中的绑定?
(sort
(progn
(break)
(mapcar (lambda (pair)
(list (car pair) (cdr pair)))
(hash-table-plist (state-removed state)))
#'<
:key #'car)
(为了让多一点背景,这里的想法是哈希表(STATE-REMOVED STATE)
转变为通过钥匙排序对列表,错误是不是HASH-TABLE-PLIST
我应该使用HASH-TABLE-ALIST
)
一旦代码命中(BREAK)
它将我发送到调试器。在这个阶段,我可以通过代码,但我决定检查STATE
。不幸的是,STATE
本身是通过WITH-SLOTS
获得的 - 从另一个对象的插槽中获取对象的宏,并且整个函数实际上是由宏的sketch
库生成的......长话短说,得到(STATE-REMOVED STATE)
我需要通过检查员的插槽访问层。
TL; DR:实际问题
这里是一个问题:现在我要打电话HASH-TABLE-PLIST
无论是在哪,我检查的对象或该对象的插槽。我怎样才能访问其中的任何一个(仅用于比较,在Smalltalk调试器中,我总是可以访问self
伪变量来获取内容)?有slime-inspector-eval
,但我如何传递我没有明确的本地绑定的东西?有关slime-inspector-eval
的文档没有多少说明。
答
好的,多一点谷歌搜索实际上回答了这个问题。我希望这会对其他人有用。
感谢this blogpost:检查对象绑定到*
。此外,检查员(slime-inspector-copy-down
)中的M-Ret
将对象存储在*
的点下,因此它可以在REPL中使用。