Docker容器中的Intellij CE 2018.2 + SBT:远程调试断点不起作用

时间:2018-08-22 07:04:07

标签: scala docker intellij-idea sbt remote-debugging

我有一个Spark应用程序,为此我执行了许多测试。我在docker容器内的SBT shell中运行此测试。我需要通过Intellij进行连接来调试应用程序,即使它连接到正在运行的SBT Shell实例,也完全忽略了断点。

我将fork / test设置为false。

还使用此cmd在容器内启动SBT shell:

  • export SBT_OPTS =“-agentlib:jdwp = transport = dt_socket,server = y,suspend = y,address = 5005 -Xmx4G”

  • 后跟命令:sbt。

它显示消息

  

收听地址为5005的运输dt_socket

SBT Shell挂起,直到Intellij调试器连接到指定端口为止。

现在,我进入Intellij Remote调试器,调试控制台将显示以下消息:

  

已连接到目标VM,地址:“ localhost:5005”,传输:   'socket'

最后,SBT恢复并开始下载依赖项。

我跑步时:

test:testOnly fully.qualified.class.name

提交断点,执行测试用例,但所有断点都将被忽略。

我不知道还能尝试什么!请帮忙!

1 个答案:

答案 0 :(得分:1)

除了将test / fork设置为false外,通常还将fork设置为false。这包括运行,构建等。

还要确保将SBT_OPTS中的suspend标志设置为yes,以便它等待Intellij Remote Debugger连接到它以执行测试。

就是这样,这就是我从docker运行时让断点工作的方式。