2011-12-08 11 views
5

Mam swój własny plik build.xml składający się z kilku obiektów docelowych do kompilacji i uruchamiania mojego projektu Java z Ant. Tutaj jest odpowiednia część tego:Jak używać Netbeans do debugowania kodu skompilowanego przy użyciu niestandardowego pliku build.xml Ant?

<path id="libpath"> 
    <fileset dir="${lib.dir}" includes="**/*.jar" /> 
</path> 

<patternset id="resources"> 
    <include name="relative/path/to/resources/" /> 
</patternset> 

<path id="resourcespath"> 
    <fileset dir="${src.dir}"> 
     <patternset refid="resources" /> 
    </fileset> 
</path> 

<target name="compile"> 
    <mkdir dir="${build.dir}" /> 
    <mkdir dir="${classes.dir}" /> 
    <javac srcdir="${src.dir}" destdir="${classes.dir}" classpathref="libpath" includeantruntime="false" debug="true" debuglevel="lines,vars,source" /> 
    <copy todir="${classes.dir}"> 
     <path refid="resourcespath" /> 
    </copy> 
</target> 

<target name="debug" depends="compile"> 
    <java fork="true" classname="${main-class}"> 
     <sysproperty key="java.library.path" path="${dist.dir}"/> 
     <classpath> 
      <pathelement location="${classes.dir}" /> 
      <path refid="libpath" /> 
     </classpath> 
    </java> 
</target> 

Wszystko co chcę zrobić, to do debugowania skompilowany kod ${classes.dir} korzystających Netbeans uruchamiając cel build.xmldebug. W tej chwili ten cel rozpoczyna kompilowaną aplikację, nie dając szansy na zatrzymanie w punktach przerwania. Wiem, że Netbeans generuje domyślny plik build-impl.xml, ale ten jest zbyt duży i jest dla mnie trudny do zrozumienia. Właśnie dlatego chcę wiedzieć, czy możliwe jest wykorzystanie IDE Netbeans do debugowania kodu Java skompilowanego przez Anta przy użyciu mojego własnego pliku build.xml.

Istnieje również podobne pytanie na temat debugging Java code when using Ant script in Eclipse, ale jak widzę proponowane rozwiązanie jest specyficzne dla Eclipse.

Odpowiedz

8

Metoda zaproponowana przez Siergieja działa, ale za każdym razem trzeba wykonać następujące czynności, aby debugować projekt:

  1. Prasa Debug przycisk główny projekt (Ctrl+F5), Netbeans będzie czekać na debbuger do zamocowania;
  2. Wybierz „Debug”> „Attach Debugger ...” z menu głównego NetBeans określić parametry debugger w pojawiła dialogowe, a następnie naciśnij „OK” przycisk lub wybrać poprzednio używany debbuger z listy rozwijanej debugowania paska narzędzi (np. Dołącz do 5432);
  3. Zdebuguj aplikację, a następnie ją zamknij (Shift+F5 nie zakończy aplikacji tak jak zwykle, zakończy ona tylko sesję debugowania).

Moim zdaniem lepszy sposób na wykorzystanie "Attach Debugger ..." jest, aby wybrać SocketListen Złącze:

  1. Wykonaj krok 2 z łańcucha poprzednich krokach (wybierz Posłuchaj 5432) - debugger zaczeka na uruchomienie aplikacji (należy pamiętać, że podopcja server dla jvmarg musi być ustawiona na n - patrz).
  2. Naciśnij przycisk Przycisk debugowania głównego projektu (Ctrl+F5).
  3. Wykonaj debugowanie aplikacji, a następnie zamknij ją lub zamknij jednocześnie z sesją debugowania, naciskając Shift+F5.

W każdym razie, ta metoda jest również niewygodne, zwłaszcza jeśli byli przyzwyczajeni, aby rozpocząć debugowanie poprzez naciśnięcie Ctrl+F5 lub naciskając odpowiedni przycisk na pasku narzędzi. Wybór wymaganego debuggera z rozwijanego menu za każdym razem jest denerwujący.

Oto najlepsze rozwiązanie - uruchom debuger bezpośrednio z celu Anta debug. W moim przypadku wygląda to tak:

<target name="debug" depends="compile"> 
    <nbjpdastart addressproperty="jpda.address" name="MyProjectName" transport="dt_socket"> 
     <classpath> 
      <pathelement location="${classes.dir}" /> 
      <path refid="libpath" /> 
     </classpath> 
    </nbjpdastart> 
    <java fork="true" classname="${main-class}"> 
     <sysproperty key="java.library.path" path="${dist.dir}" /> 
     <classpath> 
      <pathelement location="${classes.dir}" /> 
      <path refid="libpath" /> 
     </classpath> 
     <jvmarg value="-Xdebug" /> 
     <jvmarg value="-Xnoagent" /> 
     <jvmarg value="-Djava.compiler=none" /> 
     <jvmarg value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}" /> 
    </java> 
</target> 

Aby uzyskać więcej informacji, proszę spojrzeć na Creating a Target to Debug Your Java SE Application

2

Poradniki z tematu Eclipse będą działać również dla Ciebie.

  1. używać parametrów obok JVM (dodaj je do wywołania docelowej Java):

    <jvmarg value="-Xdebug" />
    <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5432" />

  2. w NetBeans używać Debug-> Dołącz Debugger z portem 5432

+0

To działa, ale metoda ta wymaga irytujące działania należy powtarzać za każdym razem, kiedy ma się rozpocząć/zatrzymać debugowanie. Zobacz mój anwser po szczegóły. W każdym razie, dziękuję za odpowiedź. – Ezze

Powiązane problemy