如何在 Clojure 堆栈跟踪中查看函数参数?

How can I see the function arguments in a Clojure stacktrace?

如何在 Clojure 堆栈跟踪中查看传递给函数的参数?

例如,在这个堆栈跟踪中,我如何查看传递给 *get-item*normalize-item-refoutvalue-ofhappinessnodestr 的参数?很高兴看到程序是如何得到错误的,而不仅仅是错误。

ERROR in (this-test) (workspace.clj:330)
Uncaught exception, not in assertion.
expected: nil
  actual: java.lang.AssertionError: Assert failed: (item-or-item-ref? item-or-item-ref)
 at fargish.workspace$_STAR_get_item.invokeStatic (workspace.clj:330)
    fargish.workspace$_STAR_get_item.invoke (workspace.clj:330)
    fargish.workspace$_STAR_normalize_item_ref.invokeStatic (workspace.clj:365)
    fargish.workspace$_STAR_normalize_item_ref.invoke (workspace.clj:360)
    fargish.workspace$outvalue_of.invokeStatic (workspace.clj:815)
    fargish.workspace$outvalue_of.invoke (workspace.clj:810)
    fargish.workspace$outvalue_of.invokeStatic (workspace.clj:812)
    fargish.workspace$outvalue_of.invoke (workspace.clj:810)
    fargish.workspace$happiness.invokeStatic (workspace.clj:904)
    fargish.workspace$happiness.invoke (workspace.clj:902)
    fargish.workspace$nodestr.invokeStatic (workspace.clj:1039)
    fargish.workspace$nodestr.invoke (workspace.clj:1035)
    . . .

堆栈跟踪中不存在该信息。

您可以在您感兴趣的命名空间上 运行 sayid (http://bpiel.github.io/sayid/)。它将跟踪所有函数调用和参数。

我认为这对 development/debugging 最有用。对于生产,上面 amalloy 的 try-catch 推荐可能是最好的。