通常我的脚本很简单,可以通过跟踪打印来调试
但我可以使用真正的调试器吗? 也许启动远程调试启动JVM,但我不知道该怎么做。
答案 0 :(得分:1)
使用Ammonite 1.0.0中提供的Script debug REPL新功能。
答案 1 :(得分:0)
将Ammonite脚本重新转换为小型SBT项目,并将其导入IDEA。然后就可以调试了。
但是我们失去了Ammonite脚本的设置简单性,以及修改脚本的简易性。
此外,必须重写import $ivy
或import $file
等魔术导入。
答案 2 :(得分:0)
当脚本在某处锁定时,使用jstack
来了解堆栈跟踪。
这不是真正的调试,但它有助于解决挂起的脚本问题。
答案 3 :(得分:0)
另一种技术是启用Java远程调试:
JAVA_OPTS='-Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=20614,suspend=y' myscript.sc
然后在IDEA,Eclipse或Netbeans中,在同一端口中创建远程调试配置。在我的例子中是20614。
尝试使用IDEA,调试器附加到运行脚本的JVM,但没有命中断点。 : - (
IDE不知道.class文件与其源之间的链接。
创建了issue for IDEA。