当前位置: 首页 > 知识库问答 >
问题:

Intellij CE 2018.2 docker容器中的SBT:远程调试断点不工作

朱宇航
2023-03-14

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

我将fork/test设置为false。

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

>

  • 导出SBT_OPTS="-agentlib: jdwp=传输=dt_socket,服务器=y,挂起=y,地址=5005-Xmx4G"

    然后是命令:sbt。

    它会显示消息

    正在侦听地址为5005的传输dt_插座

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

    现在我转到Intellij远程调试器,调试控制台显示以下消息:

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

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

    当我跑步时:

    test:testOnly fully.qualified.class.name
    

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

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

  • 共有1个答案

    宋明亮
    2023-03-14

    除了将test/fork设置为false之外,fork通常也应该设置为false。这包括运行、构建等。

    此外,请确保SBT_OPTS中的挂起标志设置为yes,以便它等待Intellij Remote Debugger连接到它以执行测试。

    就是这样,这就是我从docker运行时使用断点的方式。

     类似资料:
    • 我刚刚安装了用于PHP的Netbeans(版本8.0.2)。XDebug似乎与此安装一起提供。我正在尝试获取断点,并逐步完成代码,以便在运行WAMP的本地计算机上工作。 我从未使用过PHP调试;只有Excel VBA,所以我熟悉断点和代码遍历的工作原理。这个功能似乎是Netbean/XDebug自带的。 但是当我点击屏幕中上部的debug按钮时,会弹出一堆按钮。它们中的大部分是灰色的,我无法使用它

    • 为远程调试添加常见的JDK选项: 在Intellij中创建“远程”运行配置 启动,运行,然后启动远程调试器 当我这样做时,SBT打印出来: 代码不会停在这一行,而是继续执行,所以我返回了响应。 我使用的是Java1.8.0_111、Scala2.12和SBT0.13.15。

    • 我很难弄清楚如何设置在Docker容器中运行的python应用程序(Flask)的远程调试。具体来说,我使用的是docker compose、PyCharm professional和python 3.5。这就是我到目前为止所做的: > 我把pycharm-debug-py3k.egg复制到项目文件夹 我在wsgi.py文件中添加了以下行: 我在PyCharm中创建了一个远程调试配置(通过将本地机

    • 我正在为nodejs应用程序上的典型开发人员规划工作流。我想你们大多数人都会: git clone[appcode](具有卷映射到本地路径的Dockerfile) 然后我编辑一些代码,最好使用像WebStorm或文本编辑器Sublime等IDE。然后终端Ctrl C终止当前进程 以上所有内容看起来都很标准吗? 我的主要问题是,是否有人使用IDE或节点检查对容器进行调试? 我尝试过暴露端口等..连接

    • Swoole 开发组成员 @codinghuang 开发了一个新的调试扩展,名为 Yasd ,另一个 Swoole 调试器。 众所周知,xdebug 原生对 Swoole 并不兼容,并且代码难以维护,所以才有了 Yasd! Yasd 完全兼容 xdebug 协议,你可以在任何支持 xdebug 的 IDE 中以同样的方式使用 Yasd 进行单步调试。 Yasd 地址:https://github.

    • 我一直在尝试对Java小程序进行远程调试。我使用的是Java 7 update 51,当我尝试加载小程序时,它会在Java控制台中显示,然后被触发。 我在Javacpl中将以下参数作为运行时参数传递:“-Djava.compiler=NONE-Xnoagent-Xdebug-Xrunjdwp:transport=dt_socket,address=8007,server=y,suspend=n”