通过执行"gradle run"调试Java程序

Sky*_*Dog 17 java eclipse debugging gradle

我在Eclipse IDE中有一个Gradle项目,我通常使用该选项gradle run来运行我的Java应用程序.

我的Java代码中有一个错误,我想调试它,但是当我执行时gradle run,调试器不会在断点中停止.在"Debug as"菜单中,我没有类似的东西gradle debug.

我该如何调试我的应用程序?

Ayo*_*yan 27

要在Eclipse中调试Gradle项目,请执行以下步骤:

第1步:
将这些放在build.gradle文件中:

tasks.withType(JavaExec) {
    if (System.getProperty('DEBUG', 'false') == 'true') {
        jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=9099'
    }
}
Run Code Online (Sandbox Code Playgroud)

第2步:

从项目的根目录运行:

gradle -DDEBUG=true run
Run Code Online (Sandbox Code Playgroud)

您现在将在控制台中看到类似的内容:

Listening for transport dt_socket at address: 9099
Run Code Online (Sandbox Code Playgroud)

第3步:

现在在源文件中设置Eclipse中的断点.

第4步:

最后一步,现在右键单击Eclipse上的Project> Debug as> Debug configuration> Remote Java application.

你必须设置这些字段:

1. Project (this should be set to name of your Eclipse project)
2. Host (here it's localhost)
3. Port (in this example it will be 9099)
Run Code Online (Sandbox Code Playgroud)

单击"调试".现在,只要它在Eclipse中遇到断点,程序就会停止.

要通过示例项目查看这些步骤的详细信息,请参阅GitHub上的这个gradle示例:

  • 这对我有用,但我需要将`debug_socket`改为`dt_socket`.`jvmArgs'-Xdebug',' - Xrunjdwp:transport = dt_socket,server = y,suspend = y,address = 9099'` (3认同)
  • 嘿,当我尝试您的步骤时,为远程应用程序设置调试配置会导致错误消息无法连接到远程 VM。拒绝连接。我正在尝试运行一个从 gradle 执行我的黄瓜测试的任务,并在 Java 代码中的断点处停止。有小费吗? (2认同)

Mar*_*ger 27

尽管接受的答案应该有效,但您可以更容易地实现它.


  1. 只要运行gradle run --debug-jvm.这将以远程调试模式启动应用程序,您可以在端口上连接任何远程调试器,例如Eclipse 5005.

  2. 假设您使用Eclipse作为IDE:在Eclipse中,继续使用Project - > Debug as ... - > Debug Configuration - > Remote Java Application.作为主机设置localhost,作为端口5005,你可以自由地去.


有关更多信息,请参阅有关测试的官方Gradle Java插件文档.

[...]也可以通过--debug-jvm任务选项在调用时启用(自Gradle 1.12起).