我的CL代码在SORT
或MAPCAR
上中断,但有一些错误(例如,25)不是列表。这告诉我传递它们的数据结构有问题。因此,我将(BREAK)
放在发生错误的地方之前的代码中。它看起来像这样:
(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
我应该使用{{ 1}})
一旦代码命中HASH-TABLE-ALIST
,它就会将我发送到调试器。在这个阶段,我可以逐步完成代码,但我决定检查(BREAK)
。不幸的是,STATE
本身是由STATE
- 来自一个对象的宏获得的,该对象是另一个对象中的一个槽,整个函数实际上是由WITH-SLOTS
宏生成的SKETCH
很长一段时间,要到达sketch
我需要在检查器中查看插槽访问层。
这是一个问题:现在我想在我正在检查的对象上或在此对象的插槽上调用(STATE-REMOVED STATE)
。我如何访问其中任何一个(仅用于比较,在Smalltalk调试器中我总是可以访问HASH-TABLE-PLIST
伪变量来获取东西)?有self
,但如何传递我没有明确本地绑定的内容? slime-inspector-eval
上的文档并没有多说。
答案 0 :(得分:4)
好的,谷歌搜索实际上回答了这个问题。我希望它对别人有用。
感谢this blogpost:受检查的对象绑定到*
。此外,检查器中的M-Ret
(slime-inspector-copy-down
)将对象存储在*
下的对象下,以便可以在REPL中使用。