如何调试 Ammonite 脚本?
How to debug an Ammonite script?
通常我的脚本很简单,可以通过打印跟踪来调试
但是我可以使用真正的调试器吗?
也许在启用远程调试的情况下启动 JVM,但我不知道该怎么做。
将 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 个文件及其来源之间的 link。
创建了 issue for IDEA。
使用 Script debug REPL Ammonite 1.0.0 中的一项新功能。
通常我的脚本很简单,可以通过打印跟踪来调试
但是我可以使用真正的调试器吗? 也许在启用远程调试的情况下启动 JVM,但我不知道该怎么做。
将 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 个文件及其来源之间的 link。
创建了 issue for IDEA。
使用 Script debug REPL Ammonite 1.0.0 中的一项新功能。