【问题标题】:Remote debugging with mvnDebug, doesn't stop at breakpoint使用 mvnDebug 进行远程调试,不会在断点处停止
【发布时间】:2019-03-20 12:04:58
【问题描述】:

https://stackoverflow.com/a/14853683/286795 的启发,我正在尝试使用 mvnDebug 和 IntelliJ 远程调试 Maven 项目。但是,执行不会在我的断点处停止。 重现一个简单的 Hello World 示例:

在本地机器上:

git clone https://github.com/LableOrg/java-maven-junit-helloworld.git
cd java-maven-junit-helloworld
mvnDebug test

在远程机器上:

  1. 打开 IntelliJ
  2. 从版本控制->Git 中签出,设置 URL:https://github.com/LableOrg/java-maven-junit-helloworld.git,克隆
  3. 打开项目
  4. 打开Hello.java,在printer.println(HELLO);行设置断点

  5. 运行->调试...->编辑配置...,添加新配置->远程

  6. 设置调试器模式:附加,传输:套接字,主机:,端口:8000
  7. 应用,调试

测试现在将运行而不会在断点处停止。为什么?

【问题讨论】:

    标签: maven debugging


    【解决方案1】:

    在运行mvnDebug 命令时,使用-DforkMode=never

    所以您的 maven 命令将如下所示:

    mvnDebug -DforkMode=never -Dmaven.surefire.debug clean install
    

    有关-DforkMode=never的更多信息,请阅读here

    【讨论】:

      【解决方案2】:

      您需要将maven-surefire-plugindebugForkedMode 设置为true

       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-surefire-plugin</artifactId>
         <version>${maven-surefire-plugin.version}</version>
         <configuration>
            <debugForkedProcess>true</debugForkedProcess>
         </configuration>
       </plugin>
      

      然后在端口 5005 上添加另一个远程调试配置。

      【讨论】:

      • 嗨@amseager,感谢您的帮助。这个对我有用 !我有另一个问题。为什么我需要启动 2 个远程调试:1 个在端口 5005 上,另一个在 8000 上?
      • 嗨。这些分别是 maven surefire 插件和 mvnDebug 的默认端口。实际上,我发现不使用 mvnDebug 而是简单地使用 mvn 更容易(例如“mvn test”或通过 IDEA 的 maven 工具栏中的“test”目标)。在这种情况下,您只需要在端口 5005 上启动远程调试(但无论如何都应将“debugForkedProcess”标志设置为 true)。适用于 maven 3.6.1,不知道旧版本。
      猜你喜欢
      • 1970-01-01
      • 2013-09-26
      • 1970-01-01
      • 2019-04-11
      • 2023-03-12
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多