我有一个 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。
显示消息
Listening for transport dt_socket at address: 5005
SBT shell 挂起,直到 Intellij 调试器连接到指定端口。
现在我转到 Intellij 远程调试器,调试控制台显示此消息:
Connected to the target VM, address: 'localhost:5005', transport: 'socket'
最后,SBT 恢复并开始下载依赖项。
当我运行时:
test:testOnly fully.qualified.class.name
并提交断点,执行测试用例但忽略所有断点。
我不知道还能尝试什么!请帮忙!
最佳答案
除了将test/fork设置为false外,fork一般也应该设置为false。这包括运行、建筑等。
此外,确保 SBT_OPTS 中的挂起标志设置为是,以便它等到 Intellij Remote Debugger 连接到它以执行测试。
就是这样,这就是我在从 docker 运行时设置断点的方式。
关于scala - Intellij CE 2018.2 + docker 容器中的 SBT : Remote debug breakpoints not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51961399/