Skip to content

Netbeans_Free_Form_Application_Project_Debug

Iacob edited this page Nov 8, 2010 · 1 revision

在Netbeans中调试用ant组织的Java源代码

源代码如下

package test.freeform;

/** * * @author Iacob */ public class Main {

public static void main(String args[]) {
int i = 5;
        System.out.println("Hello.");
    }
}

然後编写一个ant脚本

Toggle line numbers

 1 <project name="TestJavaFreeForm" basedir="." default="build">
 2
 3     <!-- 定义路径 -->
 4     <path id="project.classpath">
 5         <dirset dir="build" />
 6     </path>
 7     <path id="project.sourcepath">
 8         <dirset dir="src" />
 9     </path>
10
11     <!-- 删掉存储class文件的文件夹 -->
12     <target name="clean">
13         <delete dir="build" />
14     </target>
15
16     <!-- 建立build文件夹并将编译产生的class文件放进去 -->
17     <target name="build">
18         <mkdir dir="build" />
19         <javac srcdir="src" destdir="build" debug="on" />
20     </target>
21
22     <target name="debug" depends="build">
23
24         <!-- Netbeans自带的nbjpdastart任务,用来建立用於调试Java程序的Socket服务 -->
25         <nbjpdastart name="My App" addressproperty="jpda.address" transport="dt_socket">
26             <classpath refid="project.classpath"/>
27             <sourcepath refid="project.sourcepath" />
28         </nbjpdastart>
29
30         <!-- 在调试状态运行此程序 -->
31         <java fork="true" classname="test.freeform.Main">
32             <jvmarg value="-Xdebug"/>
33             <jvmarg value="-Xnoagent"/>
34             <jvmarg value="-Djava.compiler=none"/>
35             <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
36             <classpath refid="project.classpath"/>
37         </java>
38     </target>
39 </project>

逐行讲解:

第19行:

  • debug属性一定要设置成"on",否则编译器不会把行号写入class文件中。

第25行:

  • jpda.address表示Netbeans调试器会把打开的端口号存入jpda.address属性,在下文中可以使用${jpda.address}的形式引用。

  • dt_socket表示数据传输方式是dt_socket。

第27行:

  • 如果jar包没有通过IDE的设置和源代码关联,那么一定要通过sourcepath元素设置源代码的路径,否则当调试器运行到断点时IDE无法定位到相应的源代码行。

第31行:

  • 将fork设置成true可以让这个程序在单独的JVM里运行。

  • 用classname指出想要运行的类。

第35行:

  • 设置数据传输方式为dt_socket。

  • 使用${jpda.address}引用第25行中调试器设置的端口号,此程序在运行时会连接到此端口,然後我们可以对其进行调试。

然后我们在Netbeans的Projects窗口中右键点击我们要调试的项目,选择Properties,然後在左面的Categories窗口中选择 Build and Run,将Build Project功能映射到ant脚本中的build目标,将来Clean Project功能映射到ant脚本中的clean目标,然后在下面的Mapping of Custom Contextual Menu Items选单中建立一个名为Debug(实际上随便取一个名字就可以)的功能,并将其映射ant脚本中的debug目标。

最后在源代码中设置好断点位置,右键点击我们要调试的项目,选择Clean and Build,然後选择Debug,就可以看到调试结果。

None: NetbeansFreeFormApplicationProjectDebug (last edited 2008-10-10 16:16:10 by Iacob)

Clone this wiki locally