【发布时间】:2014-03-06 15:39:06
【问题描述】:
我在System.out.println("test") 命令所在的行上有一个断点。
我相信该命令是通过执行到达的,因为我看到了打印的字符串“test”。
但是断点被忽略了。
断点一直是一个红色圆圈,没有勾号或十字。 我认为这是一个问题,当 IDEA 认为类没有加载时,因为执行了命令。
我可以在各种情况下重现它:
当我按下调试时(使用 maven 配置
install exec:exec -DforkMode=never)-
远程调试 - 我在控制台中以调试模式运行 maven 目标:
mvnDebug install exec:exec -DforkMode=never或
mvnDebug install exec:execIDEA 中的远程调试配置:
- 运行远程 JVM 的参数:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 - 对于 JDK 1.4.X:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 - 传输:套接字
- 调试器模式:附加
- 主机:本地主机
- 端口:8000
- 运行远程 JVM 的参数:
在这两种情况下,调试器只打印“已连接到目标 VM,地址:'localhost:8000',传输:'socket'”
我也试过File > Invalidate Caches / Restart
和干净的构建,但断点仍然被忽略。
配置:
Ubuntu 13.10
IntelliJ IDEA Ultimate 版本 133.944
Apache Maven 3.0.4
Java 版本:1.7.0_51,供应商:甲骨文公司
操作系统名称:“linux”,版本:“3.11.0-17-generic”,arch:“amd64”,家族:“unix”
编辑: pom.xml的相关部分:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-D--secret--.server.configuration=/usr/local/etc</argument>
<argument>-classpath</argument><classpath/>
<argument>com.--secret--.Server</argument>
</arguments>
</configuration>
</plugin>
【问题讨论】:
-
这可能是您在“目标”中的类在编译时没有调试信息。您是使用 IntelliJ 还是使用 maven 构建应用程序?我会删除目标目录,然后尝试使用 IntelliJ 中的调试按钮进行调试。您的 pom.xml 中是否还有一些特殊的构建步骤? AspectJ 还是类似的?
-
我们使用 maven 进行构建。当我删除目标目录并按下“调试”时,我注意到 maven-compiler-plugin 将类编译成
target/。但仍然是断点被忽略。 pom.xml 中的构建步骤在这里:pastebin.com/zSHh5kTf -
我在您的 pom 中没有看到任何可能干扰的内容。这是一个什么样的应用程序?一个网络应用程序?具有主要方法的独立应用程序?当您提到(使用 maven 配置安装 exec:exec -DforkMode=never)时,您在哪里设置?
-
它基本上是一个服务器应用程序,它在端口上侦听 xml 请求——此时断点被忽略。另一方面,当我运行单元测试时,断点正常工作。 maven配置是在IDE中设置的maven目标(右上角下拉菜单-“编辑配置”)
标签: java debugging maven intellij-idea breakpoints