slime-inspector-eval:如何获得检查器中的绑定?

问题描述:

长的故事:动机

我有上SORTMAPCAR打破了一些错误,一些(比如说,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中使用。