我有一个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
提交断点,执行测试用例,但所有断点都将被忽略。
我不知道还能尝试什么!请帮忙!
答案 0 :(得分:1)
除了将test / fork设置为false外,通常还将fork设置为false。这包括运行,构建等。
还要确保将SBT_OPTS中的suspend标志设置为yes,以便它等待Intellij Remote Debugger连接到它以执行测试。
就是这样,这就是我从docker运行时让断点工作的方式。