通常我的脚本很简单,可以通过打印跟踪来调试
但是我可以使用真正的调试器吗?也许在启用远程调试的情况下启动 JVM,但我不知道该怎么做。
使用脚本调试 REPL是 Ammonite 1.0.0 中提供的一项新功能。
将 Ammonite 脚本重新转换为一个小型 SBT 项目,并将其导入 IDEA。然后就可以调试了。
但是我们失去了 Ammonite 脚本的设置简单性和修改脚本的便利性。
此外,魔术导入喜欢import $ivy
或import $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 文件与其源之间的链接。
为 IDEA创建了一个问题。