You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ClojureScript中不中断执行地打印当前堆栈跟踪?

在ClojureScript中打印堆栈跟踪(不中断程序)

嘿,这个需求我太熟了!既然你已经配置好source maps,完全可以在不打断程序运行的前提下,轻松打印出对应到ClojureScript源码的堆栈跟踪,下面给你两个实用的方法:

方法1:最简方案——直接调用console.trace()

ClojureScript可以无缝调用JavaScript的API,所以在你想要查看调用来源的函数里,直接加一行代码就行:

(js/console.trace)

执行后,浏览器控制台会输出完整的调用堆栈,而且因为source maps已经配置妥当,DevTools会自动把编译后的JavaScript栈帧映射回你的ClojureScript源文件和具体行号,直接点击就能跳转到源码位置,非常直观。

方法2:手动捕获堆栈(自定义输出)

如果你需要对堆栈信息做一些处理再打印(比如过滤某些无关栈帧),可以通过Error对象来获取堆栈字符串:

(let [stack-trace (.-stack (js/Error.))]
  (js/console.log "当前调用堆栈:\n" stack-trace))

这个stack-trace变量里包含了完整的调用栈信息,同样会被source maps解析成对应的ClojureScript代码位置,你可以根据需求调整输出格式。

额外小提醒

  • 调试完成后记得把这些代码移除或者用编译条件包裹(比如只在开发环境生效),避免在生产环境产生不必要的性能消耗。
  • 如果使用Chrome或Firefox的DevTools,还可以通过控制台的栈帧链接直接跳转到对应的ClojureScript源码行,调试效率会更高!

内容的提问来源于stack exchange,提问作者Neal Ehardt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:34:13