如何调试 Ammonite 脚本?

How to debug an Ammonite script?

通常我的脚本很简单,可以通过打印跟踪来调试

但是我可以使用真正的调试器吗? 也许在启用远程调试的情况下启动 JVM,但我不知道该怎么做。

将 Ammonite 脚本重新转换为小型 SBT 项目,并将其导入 IDEA。然后就可以调试了。

但是我们失去了 Ammonite 脚本的设置简单性和修改脚本的便利性。

此外,必须重写 import $ivyimport $file 等魔法导入。

当脚本在某处被锁定时,使用 jstack 了解堆栈跟踪。

这不是真正的调试,但它有助于解决挂起的脚本问题。

另一种技术是启用Java远程调试:

JAVA_OPTS='-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=20614,suspend=y' myscript.sc

然后在IDEA、Eclipse或者Netbeans中,在同一个端口创建远程调试配置。在我的示例中为 20614。

尝试使用 IDEA,调试器附加到运行脚本的 JVM,但未命中断点。 :-(

IDE 不知道 .class 个文件及其来源之间的 link。

创建了 issue for IDEA

使用 Script debug REPL Ammonite 1.0.0 中的一项新功能。