[Java] Debugowanie w Eclipse aplikacji Javy uruchamianych przez skrypt Ant

Ten krótki wpis stanowi rozwiązanie „problemu” przed którym stanął dzisiaj mój współpracownik. W skrócie sprowadza się do do odpowiedzi na następujące pytanie: jak debugować w Eclipse aplikację Javy uruchomioną przez skrypt Ant poza Eclipse? Pominę wszystkie nudne szczegóły i uproszczę maksymalnie przykład – dla ustalenia uwagi załóżmy że główna klasa aplikacji eclipse.remote.debug.test.App znajduje się w jarze test-app-0.0.0.SNAPSHOT.jar a skrypt Ant który ją uruchamiaja wygląda następująco

<!--?xml version="1.0" encoding="UTF-8"?-->
<?xml version="1.0" encoding="UTF-8"?>
<project>
   <target name="run">
      <path id="execute-classpath">
         <fileset file="deploy/test-app-0.0.0.SNAPSHOT.jar" />
      </path>
      <java 
         classname="eclipse.remote.debug.test.App" 
         failonerror="true"
         fork="true">
         <classpath refid="execute-classpath" />
      </java>
   </target>
</project>

Pierwszym krokiem jest oczywiście umożliwienie podłączenia debuggera do JVM co robimy przez przekazanie opcji -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=$PORT w parametrach uruchomieniowych maszyny wirtualnej. W Ant’owym tasku java robimy to następująco

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

dobierający oczywiście poszczególne parametry (głównie suspend który decyduje o tym czy maszyna wirtualna oczekuje na podłączenie się debugera) wedle potrzeb.
Jeśli używamy Javy 5.0 lub nowszej możemy użyć JVMTI zamiast JVMDI

<jvmarg value="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000" />

Teraz pozostaje już tylko podłączyć się debugerem do procesu javy. W Eclipse przechodzimy do Debug | Debug Configurations… zaznaczamy Remote Java Application i wybieramy New lanuch configuration. Następnie ustawiamy parametry konfiguracji (nadajemy jej nazwę, projekt jest opcjonalny, podpinamy źródła w zakładce Source) , stawiamy breakpointy i uruchamiany. Ta konfiguracja powinna przypominać tę zamieszczoną poniżej

Możemy teraz przełączyć się do perspektywy Debug gdzie powinniśmy ujrzeć znajomy widok

Resources

Skomentuj

Wprowadź swoje dane lub kliknij jedną z tych ikon, aby się zalogować:

Logo WordPress.com

Komentujesz korzystając z konta WordPress.com. Log Out / Zmień )

Zdjęcie z Twittera

Komentujesz korzystając z konta Twitter. Log Out / Zmień )

Facebook photo

Komentujesz korzystając z konta Facebook. Log Out / Zmień )

Google+ photo

Komentujesz korzystając z konta Google+. Log Out / Zmień )

Connecting to %s