我知道http://richhickey.github.com/clojure/clojure.stacktrace-api.html。
有没有办法在不抛出异常并捕获它的情况下获取当前的堆栈跟踪?
(我正在调试一段代码,并希望在某些点捕获堆栈跟踪,以便分析发生了什么。)
谢谢!
我知道http://richhickey.github.com/clojure/clojure.stacktrace-api.html。
有没有办法在不抛出异常并捕获它的情况下获取当前的堆栈跟踪?
(我正在调试一段代码,并希望在某些点捕获堆栈跟踪,以便分析发生了什么。)
谢谢!
使用 clojure.repl.pst
user=> (try (/ 1 0) (catch Exception e (pst e)))
ArithmeticException Divide by zero
clojure.lang.Numbers.divide (Numbers.java:156)
clojure.lang.Numbers.divide (Numbers.java:3691)
user/eval28 (NO_SOURCE_FILE:8)
clojure.lang.Compiler.eval (Compiler.java:6511)
clojure.lang.Compiler.eval (Compiler.java:6477)
clojure.core/eval (core.clj:2797)
clojure.main/repl/read-eval-print--6569 (main.clj:245)
clojure.main/repl/fn--6574 (main.clj:266)
clojure.main/repl (main.clj:266)
clojure.main/repl-opt (main.clj:332)
clojure.main/main (main.clj:427)
clojure.lang.Var.invoke (Var.java:423)
此代码返回 StackTraceElement 数组,该数组不难转换为可读形式:
(.getStackTrace (Thread/currentThread))