gpt4 book ai didi

emacs - 在 Slime 调试器中检查局部变量的值?

转载 作者:行者123 更新时间:2023-12-01 04:00:32 26 4
gpt4 key购买 nike

我正在寻找一种更好的技术来做到这一点。我的普遍问题是调试器进入太晚或太早而无法捕获变量的值。

我首先尝试的是:

(loop for i from 0 to 10 do
(break))

当调试器进入中断时,我无法访问 i :( 所以这是白费力气。我试过 e 调试器选项(框架中的 eval),但 SLIME 通常只是出问题,我必须重新连接到 SWANK。 vt 没有帮助,因为变量只是“不存在”。

我最终做了什么:
(loop for i from 0 to 10 do
(signal i))

这是愚蠢的,但有效,因为它把 i在帧的堆栈上,我可以在调试器中检查。但这只是......好吧,从最糟糕的意义上说,这是一种骇人听闻的做法。有没有办法“观察”一个变量,或者有一种更有意义的方式来放置断点,这样我就可以在输入断点的地方看到更多的变量?

最佳答案

你的第一个片段对我来说很好用 CCL(默认 optimize 设置)、Emacs 24 和最近拉出的 Slime:

Break
[Condition of type SIMPLE-CONDITION]

Restarts:
0: [CONTINUE] Return from BREAK.
1: [RETRY] Retry SLIME REPL evaluation request.
2: [*ABORT] Return to SLIME's top level.
3: [ABORT-BREAK] Reset this thread
4: [ABORT] Kill this thread

Backtrace:
0: (#<Anonymous Function #x186F9B7E>)
Locals:
I = 0
1: (CCL::CHEAP-EVAL (LOOP FOR I FROM 0 TO 10 DO (BREAK)))


sldb-eval-in-frame对我来说也很好用。也许您应该尝试不同的 Lisp 实现或不同版本的 Slime。

另外,请注意不同的 optimize 设置在这里可能很重要,并且一些实现为解释代码提供了更好的调试结果(如果解释器可用,那就是)。尝试类似 (declaim (optimize (debug 3) (speed 0) (space 0))) .

关于emacs - 在 Slime 调试器中检查局部变量的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13772246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com