Java Profiling mit TPTP - Agent Controller fehlt?!

DarthShader

Erfahrenes Mitglied
Hallo,

ich möchte eine Java Anwendung profilen, und zwar mit TPTP (Test and Performance Tools Platform, http://www.eclipse.org/tptp/).

Ich habe TPTP über die Eclipse Update Funktion installiert inklusive aller Abhängigkeiten und bin "recht sicher", dass alles korrekt installiert ist. Um eine Anwendung zu profilen, bi n ich dieser Anleitung gefolgt: http://www.eclipse.org/articles/Article-TPTP-Profiling-Tool/tptpProfilingArticle.html


Starte ich jedoch das Profiling einer sehr einfachen Beispielanwendung, so erscheint folgende Fehlermeldung:

"Agent Controller is unavailable under port 10002. Make sure that the service is started and the port number is correct under preferences."

Im Prinzip hat er ja recht - ich habe kein Agent Controller installiert und er kann auf Port 10002 nichts finden. Aber nach allem was ich darüber gelesen habe, brauche ich gar keinen Agent Controller, da ich nur eine kleine lokale Anwendung profilen will.

Ich hoffe sehr, dass sich hier jemand mit TPTP ein wenig auskennt und mir sagen kann, wie ich es zum Laufen bekomme bzw. was hier das Problem ist.

Vielen Dank für Eure Hilfe!
 
Hmm ja ich hab das mit Java 1.6 auch noch nicht zum laufen bekommen. Mit 1.5 sollte es aber gehen. Ansonsten kannst du auch den Yourkit Java Profiler im EAP benutzen. Da ist der auch kostenlos und hat ne eclipse Integration.
 
Hmm ja ich hab das mit Java 1.6 auch noch nicht zum laufen bekommen. Mit 1.5 sollte es aber gehen. Ansonsten kannst du auch den Yourkit Java Profiler im EAP benutzen. Da ist der auch kostenlos und hat ne eclipse Integration.

Yourkit Java Profiler ist nur für nicht-kommerzielle Vorhaben kostenlos, diese Situation trifft bei mir leider nicht zu.


Hallo,

welche Java, Eclipse, TPTP Version verwendest du?
Zum Thema TPTP unter Java 6 schau mal hier:
http://dev.eclipse.org/newslists/news.eclipse.tptp/msg03272.html

Die Versionen, die ich verwende, sind:

Java 1.6.0_03
Eclipse 3.3.0 (Build M20070921-1145)
TPTP 4.4.1.

Ich habe mir den Newspost durchgelesen und bin von dort aus auch zum Bugzilla Ticket bezüglich TPTP und Java 6 gekommen: https://bugs.eclipse.org/bugs/show_bug.cgi?id=148936 .

Irgendwie ist das sehr verwirrend. Der Kommentar #5 von "Asaf Yaffe" besagt anscheinend, dass TPTP mit Java 6 gehen soll, also auch mit Java 6 class files.

Mein Problem ist aber zunächst erstmal, dass mein TPTP anscheinend einen Agent Controller benötigt. Aber TPTP soll ja den IAC haben, den Integrated Agent Controller, damit man keinen extra AC installieren muss. Nur dies funktioniert anscheinend nicht bzw. ich weiß überhaupt nicht, wie ich TPTP dazu kriege, den IAC zu verwenden. Ich finde weder in der Doku etwas dazu, noch in den Eclipse Newsgroups.

Weiß von Euch jemand noch einen Rat?

Danke!
 
Hallo,

wenn du das unter Java 6 laufen lassen möchtest brauchst du einen neuen / passenden Agent Controller (SDK & Runtime) für deine Platform. Diesen findest du unter:
http://www.eclipse.org/tptp/home/downloads/ im Abschnitt Agent Controller.
Im Zip findet man ein GettingStarted.htm. Wenn man dessen Anweisungen folgt funktionierts einwandfrei ;-)

Gruß Tom
 
wenn du das unter Java 6 laufen lassen möchtest brauchst du einen neuen / passenden Agent Controller (SDK & Runtime) für deine Platform. Diesen findest du unter:
http://www.eclipse.org/tptp/home/downloads/ im Abschnitt Agent Controller.
Im Zip findet man ein GettingStarted.htm. Wenn man dessen Anweisungen folgt funktionierts einwandfrei ;-)

Wieso auch die SDK Version?

Und ich brauche den "stand-alone Agent Controller" auch, wenn ich nur eine einfache lokale Anwendung profilen will? Ich dachte dazu wäre der Integrated Agent Controller, den ich ja auch verzweifelt versuche, zu benutzen.
 
Zuletzt bearbeitet:
Hallo,

das SDK braucht man um den im GettingStarted.htm erwähnten Test durchzuführen.
ich dachte auch, dass der Integrated Agent Controller ausreichen würde, aber dem ist scheinbar nicht so zumindest nicht wenn man Java 6 Anwendungen profilen will. Irgendwo auf dieser Seite gibts wahrscheinlich auch den in der mail erwähnten Connector für Java 6 aber den hab ich (nach kurzer Suche) nicht finden können.

Das mit dem Standalone Agent Controller funktioniert aber auch ganz einfach.
Runtime / SDK in ein entsprechendes Verzeichnis entpacken.
SetConfig.bat ausführen und entsprechend Konfigurieren.
Code:
D:\stuff\TPTP\4.x\agent\bin>SetConfig.bat
Specify the fully qualified path of "java.exe" (e.g. c:\jdk1.4\jre\bin\java.exe):
  Default>"C:\Programme\Java\jdk1.6.0_04\bin\java.exe" (Press <ENTER> to accept the default value)
  New value>
Network access mode (ALL=allow any host, LOCAL=allow only this host, CUSTOM=list of hosts):
  Default>"ALL" (Press <ENTER> to accept the default value)
  New value>
Security enabled. (true/false):
  Default>"FALSE" (Press <ENTER> to accept the default value)
  New value>
Please enter the JBoss Application Server Home:
  Default>"D:\stuff\jboss\4.2.2GA\jboss-4.2.2.GA" (Press <ENTER> to accept the default value)
  New value>
Please enter the JOnAS Application Server Home:
  Default>"null" (Press <ENTER> to accept the default value)
  New value>

Anschliend
D:\stuff\TPTP\4.x\agent\bin>RAServer.exe
starten.

Damit wird ein Prozess gestartet der auf Port 10002 / 10006 lauscht und entsprechende Unterstützung für den Agent Controller in Eclipse TPTP bereitstellt. Anschließend muss man nur noch in Eclipse eine Anwendung zum Profiling Konfigurieren. Profile as Java Application -> Monitor -> Java Profiling - JRE 1.5 -> Entspechendes Profiling Ziel (bsp. Execution Time Analysis) und dann Apply und Profile anklicken.. schon kanns losgehen.

Bei der Memory Analysis musste ich nach einem Profile-Lauf das "Ergebnis" mit F5 manuell refreshen, ohne das blieb die Memory Analysis View leer.

HTH
Gruß Tom
 
Also das ist alles eindeutig zu kompliziert. Diesen ganzen Krams muss man bei anderen Profilern ja auch nicht durchführen und ich erwarte einfach, dass das was ich da runterlade einfach funktioniert ohne dass man noch hier und da und dies einstellen muss... oder es zumindest einen Assistenten oder sonstwas gibt was einen darauf hinweist das tun zu müssen.

Wirklich sehr unschön..... ich warte denn noch bis das mal wieder ordentlich funktioniert. Scheint sich aber niemand so recht drum zu kümmern.
 
Nungut, ich glaube es gibt irgendeine höhere Macht, die nicht möchte, dass ich mein Java Programm profile.

Die Versionen die ich benutze, habe ich ja schon oben geschrieben. Ich starte also den Agent Controller (ich habe natürlich vorher mit SetConfig.bat eine Konfig erstellt) und klicke in Eclipse im Profile Fenster ("Open Profile Dialog") auf den Tab "Monitor" und dann auf den Button "Test availability" - Eclipse sagt, dass die Verbindung erfolgreich war.

Zunächst habe ich mich gefreut, aber als ich dann (nachdem ich ein paar Einstellungen vorgenommen habe, wie z.B. "Java Profiling JRE 1.5 or higher" und "Execution Time Analysis") das Profiling starten wollte, kommt die Fehlermeldung:

Code:
java.exe hat ein Problem festgestellt und muss beendet werden.

AppName: java.exe	 AppVer: 6.0.30.5	 ModName: jpiagent.dll
ModVer: 0.0.0.0	 Offset: 000031fc

Klicke ich dann auf schließen kommt nach ein paar Sekunden

Code:
An unexpected error occoured while attempting to establish a connection with the JVMTI agent.

java.lang.NullPointerException
null

java.lang.NullPointerException
  at org.eclipse.tptp.platform.jvmti.client.internal.controlproviders.TIAgentControlProvider$TIAgentStateModifier.doAction(TIAgentControlProvider.java:310)
  at org.eclipse.tptp.platform.jvmti.client.internal.controlproviders.TIAgentControlProvider$TIAgentStateModifier.performCollectiveAction(TIAgentControlProvider.java:274)
  at org.eclipse.tptp.platform.jvmti.client.internal.controlproviders.TIAgentControlProvider$TIAgentStateModifier.startMonitoring(TIAgentControlProvider.java:239)
  at org.eclipse.tptp.platform.jvmti.client.internal.launcher.TIDelegateHelper.configureDataProcessor(TIDelegateHelper.java:767)
  at org.eclipse.tptp.platform.jvmti.client.internal.launcher.TIDelegateHelper.attachToAgent(TIDelegateHelper.java:703)
  at org.eclipse.tptp.platform.jvmti.client.internal.launcher.TIDelegateHelper.attachToAgent(TIDelegateHelper.java:618)
  at org.eclipse.tptp.platform.jvmti.client.internal.launcher.TIDelegateHelper.access$7(TIDelegateHelper.java:616)
  at org.eclipse.tptp.platform.jvmti.client.internal.launcher.TIDelegateHelper$2.processLaunched(TIDelegateHelper.java:457)
  at org.eclipse.tptp.platform.execution.client.core.internal.ProcessImpl.launchAC(ProcessImpl.java:599)
  at org.eclipse.tptp.platform.execution.client.core.internal.ProcessImpl.launch(ProcessImpl.java:133)
  at org.eclipse.tptp.platform.jvmti.client.internal.launcher.TIDelegateHelper.launchProcess(TIDelegateHelper.java:492)
  at org.eclipse.tptp.platform.jvmti.client.internal.launcher.TIDelegateHelper.launch(TIDelegateHelper.java:313)
  at org.eclipse.tptp.platform.jvmti.client.internal.launcher.TIJavaLauncherDelegate.launch(TIJavaLauncherDelegate.java:37)
  at org.eclipse.tptp.trace.ui.internal.launcher.core.LauncherUtility.delegateInit(LauncherUtility.java:1163)
  at org.eclipse.tptp.trace.ui.provisional.launcher.PrimaryLaunchDelegate.run(PrimaryLaunchDelegate.java:196)
  at java.lang.Thread.run(Unknown Source)

Ich hoffe wirklich sehr, dass nun noch jemand Rat weiß. Ich glaube schon fast nicht mehr daran, dass ich noch zum Profilen mit TPTP komme :)

edit: Das SDK brauche ich doch nicht für noch etwas anderes oder? Ich habe jetzt versucht, meine eigene Anwendung zu profilen. Habe zwar das TPTP SDK runtergeladen, aber benutze es nirgenswo, habe also z.B. nichts davon ins Eclipse Verzeichnis kopiert. Aber das dürfte ja nicht der Fehler sein?

Danke!
 
Zurück