要在 IDE 的调试器中运行 ,项目的生成脚本中必须包含一个专门的目标。此外,还需要将该目标映射到 IDE 的“调试项目”命令。
如果没有为项目编写调试目标,则在第一次尝试调试项目时,IDE 将为您生成一个基本目标。您可以检查该目标,并对该目标进行定制以满足项目的特定需求。
为自由格式项目创建调试目标:
在名为 ide-targets.xml 的文件中即创建了名为 debug-nb 的目标。生成的 ide-targets.xml 文件是一个用于导入主 build.xml 文件的生成脚本,因此,调试目标可以利用由主生成脚本设置或引用的目标和属性。
此外,还会在 project.xml 文件中创建该目标的映射,以便在 IDE 中选择“调试项目”命令时调用该目标。如果从头开始编写目标,还需要自行创建该映射。请参见手动将目标映射到菜单项。
在创建目标后,便可以开始调试了。开始调试:
此时,将运行目标并开始执行程序。目标的运行进度将显示在“输出”窗口中,而调试器的状态则显示在“输出”窗口底部的状态栏中。
生成的 Ant 目标将执行以下操作:
生成的调试目标(IDE 能够猜测出它的运行时类路径)会按以下方式显示,其中,斜体项表示特定于具体项目的值:
<?xml version="1.0" encoding="UTF-8"?> <project basedir=".." name="YourProjectName"> <import file="../build.xml"/> <!-- TODO: edit the following target according to your needs --> <!-- (more info: http://www.netbeans.org/kb/55/freeform-config.html#debugj2se) --> <target name="debug-nb"> <nbjpdastart addressproperty="jpda.address" name="NameOfProject" transport="dt_socket"> <classpath path="ClasspathSpecifiedInYourRunTarget"/> </nbjpdastart> <java classname="MainClassSpecifiedInRunTarget" classpath="ClasspathSpecifiedInYourRunTarget" fork="true"> <jvmarg value="-Xdebug"/> <jvmarg value="-Xnoagent"/> <jvmarg value="-Djava.compiler=none"/> <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/> </java> </target> </project>
如果尚未映射运行目标,或者 IDE 无法确定项目的类路径或主类,则生成的调试目标会包括 "TODO" 占位符,您可以按以下示例填充这些值。
<?xml version="1.0" encoding="UTF-8"?> <project basedir=".." name="YourProjectName"> <!-- TODO: edit the following target according to your needs --> <!-- (more info: http://www.netbeans.org/kb/55/freeform-config.html#debugj2se) --> <target name="debug-nb"> <path id="cp"> <!-- TODO configure the runtime classpath for your project here: --> </path> <nbjpdastart addressproperty="jpda.address" name="NameOfProject" transport="dt_socket"> <classpath refid="cp"/> </nbjpdastart> <!-- TODO configure the main class for your project here: --> <java classname="some.main.Class" fork="true"> <classpath refid="cp"/> <jvmarg value="-Xdebug"/> <jvmarg value="-Xnoagent"/> <jvmarg value="-Djava.compiler=none"/> <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/> </java> </target> </project>
要指定运行时类路径,请将 pathelement 元素插入 path 元素内,并将它们指向包含类路径项的目录。例如,可以使用 pathelement 的 location 属性来指定类路径项相对于项目目录的位置。项目目录通常是包含项目的 build.xml 文件的目录。下面是一个示例:
<path id="cp"> <pathelement location="libs"> <pathelement location="build"> </path>
在 IDE 为您生成某个目标时,IDE 会自动提供该目标与 IDE 命令的菜单项之间的映射。但是,如果手动创建目标,则还需要手动创建映射。
将“调试项目”命令映射到外部 Ant 脚本中的目标:
<action name="debug"> <script>path_to_Ant_script</script> <target>target_name</target> </action>
<ide-action name="debug"/>
IDE 会将“调试项目”操作映射到项目 Ant 脚本中的指定目标。
如果成功创建了调试目标并且启动了调试器,但是调试器没有在断点处停止,则原因可能是 IDE 缺少调试信息或不清楚源文件的位置。有关详细信息,请参见关于调试自由格式项目。
有关配置自由格式项目的完整指南,请参见: