苹果酒调试 - 如何在调试时评估内容

时间:2017-02-16 18:26:17

标签: clojure cider

Cider debug instructions告诉我,我可以在调试时按e来评估某些内容。这让我在底部的Emacs迷你缓冲区中有一个小的单行空间。

有没有办法在中间切换到完整的REPL 调试一个功能,可以访问所有本地人等?目前 调试时挂起/冻结REPL。我在想什么 PyCharm或Matlab在某事物中间允许完整REPL的风格。

2 个答案:

答案 0 :(得分:1)

看来,在调试过程中,插入的REPL被绑定了。 但是可以通过调试器提供一些选项 给你几乎和你一样离开REPL。一个方便的是 in finally ect 为您即将生成的结果的新值。 因此,您实际上是在实时更改数据。

您可以使用await检查本地变量的完整列表。然后看更多 关于 ins try ect 的var并指定哪个。

你也可以 finally val 输入任意表达 你会在REPL中(正如你所提到的那样)。这似乎是一个 单行完整REPL,包括历史,编辑等。有什么东西 您希望在REPL中执行j或发现 使用lp

答案 1 :(得分:0)

我觉得非常令人沮丧的一件事是,当调试器停留在所述函数时,我无法编辑函数,然后编辑它并使用初始参数重新运行它。在苹果酒中,如果您尝试编辑正在调试的函数,emacs将使用原始代码在新缓冲区中打开bebugger。或者,你有e命令可以摧毁迷你缓冲区中的东西,我不认为这是一种很棒的体验。我最接近的是:

想象一下,你有一些崩溃的功能,你需要调试:

(defn some-fn 
  [complex-data more-data]
  ; block of code with some bug
)

我将在命名空间中创建原子并在给定函数内设置值:

(def c (atom nil))
(def d (atom nil))

(defn some-fn 
  [complex-data more-data]
  (reset! c complex-data)
  (reset! d more-data)
  ; block of code with some bug
)

然后我只使用命名空间中现有的args迭代some-fn

(some-fn @c @d)

我认为这比使用苹果酒调试器中的eval命令和迷你缓冲区要好得多。