Java Getriebe

Java und NetBeans

Debuggen von Annotation Prozessoren (Teil 2)

Ich habe vor einiger Zeit schon mal geschrieben, wie man seine eigenen Processor Implementierungen mit NetBeans debuggen kann. Durch Zufall bin ich neulich allerdings über einen anderen Hinweis gestolpert mit dem das ganze Prozedere deutlich einfacher wird und keine zweite IDE Instanz benötigt.

Niemand geringere als der „Erfinder“ von NetBeans selbst Jaroslav Tulach hat im englischen NetBeans Forum (bzw. auf der nbdev@netbeans.org Mailingliste) den Hinweis im Beitrag „Debugging an annotation processor“ gegeben: Man startet einfach Ant mit Debugoptionen und verbindet sich dann mit dem Prozess aus der IDE heraus.

Hier eine kurze Anleitung, wie man das (unter Windows) recht simpel lösen kann:

  1. Entscheidend für diese Anleitung ist das Modul, in welchem die Annotation benutzt wird, nicht die, in der die Annotation definiert wurde. Alle Abhängigkeiten müssen übersetzt sein, bevor der Debuglauf gestartet wird.
  2. Man öffne eine Eingabeaufforderung („DOS Box“) und wechsle in das Modulverzeichnis in dem die zu prüfende Annotation benutzt wird.
  3. set nbhome=c:\Program Files\NetBeans IDE
  4. set ant_home=%nbhome%\extide\ant
  5. path %path%;%ant_home%\bin
  6. set ant_opts=-Xrunjdwp:transport=dt_socket,suspend=y,server=y,address=12345
  7. ant clean netbeans

Es sollte jetzt die Zeile

1
Listening for transport dt_socket at address: 12345

in der Konsole auftauchen. Ant wartet jetzt so lange bis sich jemand per Debugger mit dem Ant-Prozess verbindet. Das kann man aus der NetBeans IDE heraus sehr einfach bewerkstelligen. Im Menü „Debug“ gibt es den Punkt „Attach Debugger…“. Den entsprechenden Dialog füllt man wie folgt aus:
Attach Debugger Dialog

Danach wird der Build „ganz normal“ ausgeführt und den Output kann man in der Konsole beobachten. Der große Unterschied ist, dass man nun in seiner Processor Implementierung Breakpoints setzen kann und wie eine „normale“ Java Anwendung debuggen kann.

Als Hinweis: Man sollte das Konsolenfenster nicht direkt schließen. Wenn das Fenster offen bleibt, braucht man nur noch die letzte Zeile aus der Anleitung oben erneut auszuführen um den Debugger wieder zu starten. Man sollte nur bedenken, dass der Ant-Aufruf nicht das Modul mit dem Processor übersetzt. Dies muss man in der IDE selbst durchführen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Time limit is exhausted. Please reload the CAPTCHA.