プロジェクトを IDE のデバッガ内で実行するには、プロジェクトの構築スクリプト内に特殊なターゲットが存在する必要があります。そのターゲットは IDE の「プロジェクトをデバッグ」コマンドにマッピングされる必要があります。
プロジェクト用に記述された debug ターゲットがない場合、プロジェクトを最初にデバッグするときに、IDE によって基本的なターゲットが作成されます。あとで、ターゲットを調べ、プロジェクトの特定の要件に合わせてターゲットをカスタマイズできます。
自由形式プロジェクトのデバッグターゲットを作成する手順は、次のとおりです。
debug-nb というターゲットが、ide-targets.xml というファイルに作成されます。作成された ide-targets.xml ファイルは主 build.xml ファイルをインポートする構築スクリプトなので、デバッグターゲットは、主構築スクリプトによって設定または参照されたターゲットおよびプロパティーを利用できます。
また、このターゲットに対するマッピングは project.xml ファイルに作成されるので、IDE で「プロジェクトをデバッグ」コマンドを選択すれば、いつでもそのターゲットは呼び出されます。ターゲットを最初から作成する場合は、このマッピングもユーザーが自分で作成する必要があります。「メニュー項目へのターゲットの手動マッピング」を参照してください。
ターゲットが作成されると、デバッグを開始できます。デバッグを開始する手順は、次のとおりです。
ターゲットが実行され、プログラムの実行が開始します。実行中のターゲットの進捗状況は「出力」ウィンドウに表示され、デバッガのステータスは「出力」ウィンドウの下部にあるステータスバーに表示されます。
作成された Ant ターゲットは次の処理を実行します。
IDE が実行時クラスパスを推測できる生成されたデバッグターゲットは、次のような内容になっています (italicized 項目にはプロジェクトに固有の値が入ります)。
<?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>
実行時クラスパスを指定するには、path 要素内に pathelement 要素を挿入し、それらの要素が、クラスパス内の項目が格納されているディレクトリを指示するようにします。たとえば、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-action name="debug"/>
IDE は「プロジェクトをデバッグ」アクションを、プロジェクトの Ant スクリプト内の指定されたターゲットにマッピングします。
デバッグターゲットの作成とデバッガの起動には成功したが、デバッガがブレークポイントで停止しない場合は、IDE でデバッグ情報が不足しているか、またはソースのある場所が認識されていない可能性があります。詳細は、「自由形式プロジェクトのデバッグの概要」を参照してください。
自由形式プロジェクトの構成については、次の場所に説明があります。