从Scala源代码汇编的远程调试JAR

时间:2017-02-03 21:32:52

标签: java scala intellij-idea jar sbt

我正在使用Scala编写的API,它使用SBT将其构建为JAR文件。我将JAR文件部署到虚拟机(VM),我可以成功执行它 - API启动并处理请求。

现在我正在尝试使用IntelliJ(v 2016.3.4)远程调试配置在源Scala代码中放置断点。这就是我所做的:

1)在IntelliJ中打开我的源代码作为Scala SBT项目。

2)打开VM端口5005

3)在VM上执行JAR:
java -noverify "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005" -cp /home/vagrant/shared/build/geotrellis-chatta-demo-assembly-0.1-SNAPSHOT.jar geotrellis.chatta.Main

我得到这个输出:
Listening for transport dt_socket at address: 5005

4)在IntelliJ中添加了远程调试配置并启动它。 IntelliJ控制台向我展示了这一点:
Connected to the target VM, address: 'localhost:5005', transport: 'socket'

但是,我的断点都不起作用。

我在上述步骤中遗漏了什么?我是Scala的新手,多年来一直没有认真对待Java,而且刚开始使用IntelliJ。

更新:IntelliJ调试器肯定在工作 - 如果我暂停它,API会停止响应请求,直到它被取消暂停。但是在断点上没有停止。

1 个答案:

答案 0 :(得分:0)

您是否为要调试的JAR指定了源代码附件?在IntelliJ中,找到JAR并将其与源代码相关联。