在Eclipse中使用ANT脚本时如何调试Java代码

zen*_*ngr 41 java eclipse ant debugging

我有一个java类,我需要调试它(放置断点并继续使用F6).我正在使用ANT脚本来初始化,构建,部署和运行代码.我在用:

<javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" debuglevel="lines,vars,source">

..........

</javac>
Run Code Online (Sandbox Code Playgroud)

但是当我将断点放在我的foo.java类中的一行中并运行ant脚本(运行部分,右键单击运行 - > Debug As - > Ant Build)时,Eclipse不会停在那一行码.

我错过了什么?!

Sam*_*mpa 49

(无法对给定的答案发表评论,所以必须另外回答)

我意识到从Eclipse启动Ant时,你必须在<java>任务中添加fork ="true" .另外,我首先不清楚如何编写嵌套的jvmargs,所以这里举个例子:

<java classname="..." fork="true">
  <jvmarg value="-Xdebug" />
  <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5432" />
  ...
</java>
Run Code Online (Sandbox Code Playgroud)


jkf*_*kff 31

<java>ant任务中,你应该添加两个jvm参数(<jvmarg>IIRC)来打开调试:

 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5432
Run Code Online (Sandbox Code Playgroud)

这将启动调试打开的java程序,程序将准备接受端口5432上的调试器连接.然后,您应该使用IDE的远程调试工具并指示它连接到端口5432.

  • 根据断点的设置位置,您可能需要在命令行参数中设置"suspend = y" - JVM将阻止启动,直到您连接调试器. (7认同)
  • 这是一个很好的教程,如何做到这一点http://www.asjava.com/ant/ant-how-do-i-remote-debug-java-code-in-ant-and-eclipse/ (2认同)

Kri*_*kar 5

在日食中:

Toolbar > External Tool Configurations... > (select your existing ANT build or create new) > JRE tab

“VM 参数”中添加:

-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y

再次 Toolbar > Debug > Debug Configurations... > Remote Java Application > New

Name: Debug Ant
Project: <Select your project where debug files are kept>
Host: localhost
Port: 8787
Run Code Online (Sandbox Code Playgroud)

现在在“外部工具配置”中启动“ ANT 任务”(等待远程 Java 应用程序调试器连接),然后从“调试”工具栏图标启动“调试 Ant ” 。