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

调试maven测试时Intellij idea调试器断开连接

锺离明煦
2023-03-14

我通过Intellij Idea通过以下链接调试maven测试:http://www.grygoriy.com/2012/01/how-to-debug-tests-maven-test-via.html

当到达第三步并开始调试时,它已连接但很快断开连接,并且不会在断点处停止。我在Intellij有:

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

已断开与目标VM的连接,地址:'localhost:5005',传输:'socket'

知道吗?

共有1个答案

秋建义
2023-03-14

唯一阻止Idea调试Maven目标的是分叉。

默认情况下,surefire和弹性引导等插件都使用分叉。

所以,当您从IDEA开始调试maven goal时,它会连接到maven,但您真正想要调试的进程与maven进程不同,所以它不会连接。

要在surefire插件中防止此类行为,您应该阅读本文:http://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html

简言之:

如果你使用旧的surefire:

<configuration>
    <forkMode>never</forkMode>
</configuration>

在新的可靠:

<configuration>
    <forkCount>0</forkCount>
</configuration>

但不太清楚:

  1. 如果是CI(我希望您使用的是CI工具),您不必在非常慢的情况下阻止分叉

所以,如果你想取悦CI、IDEA、联合开发者和你自己,你应该提供更智能的方式来调试你的构建。

我的建议是:

>

  • 默认行为是分叉的,因为构建过程通常是一件事,而调试过程则是例外

    调试器行为与易于使用的“打开”隔离

    我的变体:

    <properties>
        <test.forkCount>1</test.forkCount>
    </properties>
    <profiles>
          <profile>
                <id>debug</id>
                 <properties>
                         <test.forkCount>0</test.forkCount>    
                 </properties>
            </profile>
     </profiles>
     <build>
          <plugins>
               <plugin>
                    <!-- surefire -->
                    <configuration>
                        <forkCount>${test.forkCount}</forkCount>
                    </configuration>
                </plugin>
            </plugins>
    </build>
    

    所以,在IDEA中,您只需要创建带有目标测试的命名运行配置,并将调试包含到概要文件列表中。

    但在其他情况下,maven的行为仍然是默认的。

    其中是额外的利润-您可以在单个概要文件中包含整个调试行为。

    例如,在我的real project调试配置文件中:

    1. 关闭Spring靴上的分叉:运行

    所以如果我使用mvn

    但是如果我在CI上运行mvn部署-我将获得我的构建过程的完整堆栈。

  •  类似资料:
    • 我需要你的帮助,请理解调试一个maven应用程序使用Wildfly和Intellij的想法。 谢谢,

    • 22.13.2.调试 测试任务提供了Test.getDebug()属性,可使JVM等待调试器附加到5005端口后在进行调试. 通过调用--debug-JVM任务选项,这也可以启用调试任务(since Gradle1.12)。

    • 当你在制作应用的时候,有点小错误和发生点小报错的啥的是很正常的。有时候错误不明显,所以知道怎样去追踪错误是非常重要的。 本节课将会研究如何最好的去调试Ionic 2应用,但是不会讲什么是调试或者如何使用调试工具(例如,查看源代码,设置断点,监听网络请求等等)。如果你不熟悉基于浏览器的Javascript调试,那么强烈建议一定要先你看看这个。 浏览器调试 开发应用的时候第一发通常是桌面浏览器。能够通

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

    • 问题内容: 我正在使用 “ go test -v ”运行一堆单元测试。我想用delve调试它们。当我尝试运行调试器时,出现 “无法调试非主程序包” 错误。因此,如何使用delve调试器调试单元测试? 问题答案: 用途: 您还可以通过选择要运行的测试(就像)。 在内部,这与Flimzy的答案相同(它使用编译测试二进制文件),但更加精简,不会留下.test文件供您清理。

    • 调试器 调试工具都内置于主流浏览器中(Firefox 中需独立下载 Firebug)。更多关于 Google Chrome DevTools 的信息可以在这里找到。