# Java Profiling mit TPTP - Agent Controller fehlt?!



## DarthShader (23. März 2008)

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!


----------



## zeja (23. März 2008)

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.


----------



## Thomas Darimont (23. März 2008)

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

Gruß Tom


----------



## DarthShader (24. März 2008)

zeja hat gesagt.:


> 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.




Thomas Darimont hat gesagt.:


> 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!


----------



## Thomas Darimont (24. März 2008)

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


----------



## DarthShader (24. März 2008)

Thomas Darimont hat gesagt.:


> 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.


----------



## Thomas Darimont (24. März 2008)

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. 

```
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


----------



## zeja (24. März 2008)

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.


----------



## Thomas Darimont (24. März 2008)

Hallo,

deshalb steht da ja extra noch dabei "experimental" ;-)

Gruß Tom


----------



## DarthShader (24. März 2008)

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:


```
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


```
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!


----------



## Stromberg666 (11. Februar 2010)

Hallo Zusammen,

ich bin nur Gast hier aber trotzdem möchte ich eine Frage los werden. 

Ähnlich wie meine Vorredner habe ich versucht den Eclipse Plugin TPTP in Kommbination mit Java 6 zum laufen zu bekommen. Lokal funktioniert auch alles, jedoch schaffe ich es nicht mit TPTP Remote Anwendungen zu Profilen.

Mein Eclipse (3.5.1 Galileo) mit TPTP Plugin läuft unter Linux - und funktioniert auch. Des Weiteren hab ich mir den Agent Controller (LINUX-IA32)  heruntergeladen und installiert. Der SampleClient kann ohne Fehler ausgeführt werden. Ebenso startet der ACServer ohne Probleme, nur bekomme ich keine Verbindung von Eclipse zu dem AC Remote Server hin und kann folglich meine Anwendungen nicht profilen. Ich hab es auch schon unter Windows versucht, ging leider auch nicht.... :-(

Jetzt meine Frage, ist es schon jemand gelungen mit Eclipse und Java 6 eine Remote Anwendungen zu profilen?
Wenn ja, wie geht das? 

Danke schon mal voraus.


Gruß
  Stromberg


----------



## Hanspeter (7. Juni 2010)

Hallo zusammen

Ich habe auch meine Erfahrungen mit TPTP in Eclipse gemacht. Ich verwende Java 1.6.0_20, Eclipse 3.5.2, TPTP 4.6.2 und Agent Controller 4.6.2. Dies auf unterschliedlicher Hardware.
HardwareA: Desktop, AMD Athlon 64 Processor 3000+, 1.8GHz, 1.00 GB RAM
HardwareB: Laptop, Intel Core Duo, P8600, 2.4GHz, 1.92 GB RAM.

Auf dem Laptop funktioniert die Profilierung.
Auf dem Desktop kommt bei "connecting to the  JVMTI Agent ..." die Meldung: "java.exe hat ein Problem festgestellt und muss beendet werden."

Gruss
Hanspeter


----------

