当前位置: 首页 > 面试题库 >

通过IntelliJ IDEA在Docker容器中远程调试Java 9

哈雅珺
2023-03-14
问题内容

我有一个包含以下内容的Dockerfile:

FROM openjdk:9

WORKDIR /project

ADD . /project

EXPOSE 5005

我的docker-compose.yml看起来像这样:

version: "3.2"
services:
  some-project:
    build: .
    ports:
      - target: 5005
        published: 5005
        protocol: tcp
        mode: host
  command: "java '-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005' SomeClass"

当我执行 docker-composer时, 我看到一条消息“正在 侦听地址为5005的传输dt_socket
”。但是,当我尝试与jdb或Idea连接时,出现“ java.io.IOException:握手失败-连接过早关闭 ”。

如果我将 openjdk:9 更改为 openjdk:8, 则一切正常。但是,我的项目需要Java 9。


问题答案:

从Java
9开始,JDWP套接字连接器默认情况下仅接受本地连接。参见:http
:
//www.oracle.com/technetwork/java/javase/9​​-notes-3745703.html#JDK-8041435

因此,要从外部启用调试连接,请指定*:<port>为地址:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5005



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

  • 我有一个简单的nodeJs应用程序,它使用快速框架。我可以在docker容器中成功运行这个应用程序。 我需要从VS代码远程调试这个应用程序如何做到这一点。 我在远程调试中采取的以下步骤 docker构建命令 docker运行命令 运行docker后,it控制台输出一条消息 调试器侦听127.0.0.1:5858 但是我无法从本地主机:8080访问节点应用程序,也无法从VScode进行调试。

  • 问题内容: 有时我不得不离开办公室工作,这意味着我需要通过VPN进入实验室。我注意到在这种情况下使用Eclipse进行远程调试的速度非常慢。慢到调试器将5-7分钟连接到远程jvm的程度。连接后,每次执行断点/断行可能需要20到30秒,而且通常只是断开连接,这使我不得不重新开始。 即使没有可用的解决方案,任何人都可以解释为什么会这样吗?考虑到远程调试器的行为,我通过VPN的延迟几乎不会达到预期。我在

  • 我最近从Vim切换到VSCode,我正在尝试为通过docker运行的jest测试设置VSCode调试。 调试工作。。。某种程度上。如果我想运行jest测试并激活断点,我需要: 插入断点 开始运行相关的jest测试通过下面的launch.json任务 在测试套件到达断点之前快速执行 显然不理想-我希望确保VSCode在运行时自动附加到调试器。简而言之:在通过Docker运行Jest测试时,有没有一种

  • 我无法对WebStorm中的TypeScript文件进行远程调试。我目前使用的是WebStorm 6.0、TS编译器0.8.3和Chrome JetBrains插件0.5.7。 出于调试的目的,我所使用的服务器是一个简单的python服务器,使用命令在我的本地计算机上与源文件位于同一目录中。

  • 问题内容: 我刚刚注册了这个问题。关于是否可以使用VS Code在Docker容器中远程调试python代码。我在这里有一个完全配置的Docker容器。我在这方面获得了一些帮助,无论如何我还是Docker的新手。在其中运行Odoo v10。但是我无法在VS Code中进行远程调试。我已经尝试过这种解释,但我真的不明白。可能吗 如果是的话,我该如何运作?我正在使用VS Code 1.6.1和Don