问题描述:

Here's a typical stack trace:

#error {

:cause "No implementation of method: :put! of protocol: #'clojure.core.async.impl.protocols/WritePort found for class: clojure.lang.PersistentArrayMap"

:via

[{:type java.lang.IllegalArgumentException

:message "No implementation of method: :put! of protocol: #'clojure.core.async.impl.protocols/WritePort found for class: clojure.lang.PersistentArrayMap"

:at [clojure.core$_cache_protocol_fn invokeStatic "core_deftype.clj" 568]}]

:trace

[[clojure.core$_cache_protocol_fn invokeStatic "core_deftype.clj" 568]

[clojure.core$_cache_protocol_fn invoke "core_deftype.clj" 560]

[clojure.core.async.impl.protocols$eval1004$fn__1005$G__995__1014 invoke "protocols.clj" 18]

[clojure.core.async$_GT__BANG__BANG_ invokeStatic "async.clj" 137]

[clojure.core.async$_GT__BANG__BANG_ invoke "async.clj" 132]

[fargish.cart$do_clockstep invokeStatic "cart.clj" 132]

[fargish.cart$do_clockstep invoke "cart.clj" 131]

[fargish.cart$run_cartnos$body__29824__auto____40594$fn__40641 invoke "cart.clj" 155]

[clojure.lang.ArrayChunk reduce "ArrayChunk.java" 58]

[clojure.core.protocols$fn__6750 invokeStatic "protocols.clj" 136]

[clojure.core.protocols$fn__6750 invoke "protocols.clj" 124]

[clojure.core.protocols$fn__6710$G__6705__6719 invoke "protocols.clj" 19]

[clojure.core.protocols$seq_reduce invokeStatic "protocols.clj" 31]

[clojure.core.protocols$fn__6738 invokeStatic "protocols.clj" 75]

[clojure.core.protocols$fn__6738 invoke "protocols.clj" 75]

[clojure.core.protocols$fn__6684$G__6679__6697 invoke "protocols.clj" 13]

[clojure.core$reduce invokeStatic "core.clj" 6545]

[clojure.core$reduce invoke "core.clj" 6527]

[fargish.cart$run_cartnos$body__29824__auto____40594 invoke "cart.clj" 155]

[fargish.cart$run_cartnos invokeStatic "cart.clj" 154]

[fargish.cart$run_cartnos invoke "cart.clj" 150]

[user$eval40833 invokeStatic "form-init6256859177727771967.clj" 1]

[user$eval40833 invoke "form-init6256859177727771967.clj" 1]

[clojure.lang.Compiler eval "Compiler.java" 6927]

[clojure.lang.Compiler eval "Compiler.java" 6890]

[clojure.core$eval invokeStatic "core.clj" 3105]

[clojure.core$eval invoke "core.clj" 3101]

[clojure.main$repl$read_eval_print__7408$fn__7411 invoke "main.clj" 240]

[clojure.main$repl$read_eval_print__7408 invoke "main.clj" 240]

[clojure.main$repl$fn__7417 invoke "main.clj" 258]

[clojure.main$repl invokeStatic "main.clj" 258]

[clojure.main$repl doInvoke "main.clj" 174]

[clojure.lang.RestFn invoke "RestFn.java" 1523]

[clojure.tools.nrepl.middleware.interruptible_eval$evaluate$fn__18913 invoke "interruptible_eval.clj" 87]

[clojure.lang.AFn applyToHelper "AFn.java" 152]

[clojure.lang.AFn applyTo "AFn.java" 144]

[clojure.core$apply invokeStatic "core.clj" 646]

[clojure.core$with_bindings_STAR_ invokeStatic "core.clj" 1881]

[clojure.core$with_bindings_STAR_ doInvoke "core.clj" 1881]

[clojure.lang.RestFn invoke "RestFn.java" 425]

[clojure.tools.nrepl.middleware.interruptible_eval$evaluate invokeStatic "interruptible_eval.clj" 85]

[clojure.tools.nrepl.middleware.interruptible_eval$evaluate invoke "interruptible_eval.clj" 55]

[clojure.tools.nrepl.middleware.interruptible_eval$interruptible_eval$fn__18958$fn__18961 invoke "interruptible_eval.clj" 222]

[clojure.tools.nrepl.middleware.interruptible_eval$run_next$fn__18953 invoke "interruptible_eval.clj" 190]

[clojure.lang.AFn run "AFn.java" 22]

[java.util.concurrent.ThreadPoolExecutor runWorker "ThreadPoolExecutor.java" 1142]

[java.util.concurrent.ThreadPoolExecutor$Worker run "ThreadPoolExecutor.java" 617]

[java.lang.Thread run "Thread.java" 745]]}

How can I see the values of the arguments passed to these functions? That would help a lot in tracking down what went wrong.

网友答案:

Currently, it is impossible, but you can take a look at clojure/tools.trace library. It solves similar to your problem, but you have to wrap all your calculations in a special macro.

相关阅读:
Top