Frage

Ich verbrachte die letzten 4 Stunden versucht, Speicher einzurichten Eclipse-TPTP Profilieren auf einer Tomcat-Instanz, die die Ferne ausgeführt werden muß (das heißt nicht in Finsternis). Dies sollte möglich sein, nach dem TPTP und Agenten Controller-Dokumentation.

Ich installierte die TPTP Komponenten (4.6.0) in meinen Eclipse-(Galileo) Werkbank, zusammen mit der Agent-Steuereinheit gemäß dem Anweisungen auf der Website. Um die Agenten zu ermöglichen, habe ich die Folgende Optionen in der Befehlszeile, die die Tomcat-Instanz beginnt:

-agentlib:JPIBootLoader=JPIAgent:server=enabled;HeapProf:allocsites=true

und die folgenden Verzeichnisse auf der Vorderseite der PATH hinzugefügt:

D:\dev\tools\ac\plugins\org.eclipse.tptp.javaprofiler
D:\dev\tools\ac\bin

Wenn Tomcat mich zu starten versuchen, bekam konsequent die folgenden Fehler Nachricht:

ERROR: JDWP unable to get necessary JVMTI capabilities. ["debugInit.c",L279]

habe ich viel Googeln fand aber nichts relevant; Ich habe es versucht TPTP und verschiedene Versionen des Agent Controller neu zu installieren.

Am Ende stellte das Problem heraus zu sein, dass ich Tomcat begann mit der "jpda" -Option, der catalina.bat übersetzt in

-Xdebug -Xrunjdwp:transport=.....

das „jpda“ Befehlsargument Entfernen verursacht JVMTI zu arbeiten.

SO, die Frage ist: Ich fand nichts bei keinem meiner Recherchen anzuzeigen, dass ein JVMTI Mittel mit dem Debuggen nicht kompatibel ist. Kann jemand erklären, was los ist und warum JVMTI + JDWP ist keine gültige Setup?

War es hilfreich?

Lösung

Keine der Antworten sind soweit in Ordnung und das ist der erste Treffer, die auf Google kommt auf, wenn der Fehler erwähnt abfragen, so dass ich einige Klärung fühlen erforderlich ist.

JVMTI und JDWP Sie zusammenarbeiten, in der Tat müssen sie in der Regel zusammen verwendet werden. Sie erhalten ERROR: JDWP unable to get necessary JVMTI capabilities wenn -Xrunjdwp (und / oder möglicherweise -agentlib:jdwp) angegeben wird mehr als einmal auf der Kommandozeile. Um es zu beheben, stellen Sie sicher, dass nur Sie haben einen von -Xrunjdwp oder -agentlib:jdwp in der Befehlszeile.

Für weitere Informationen, lesen Sie weiter ...

JVMTI (Java Virtual Machine Tool Interface) ist der Nachfolger von JVMDI (Java Virtual Machine Debug Interface) und JVMPI (Java Virtual Machine Profilieren Interface). Es enthält die Funktionalität von JVMDI und JVMPI, die beide in Java veraltet wurden 5 und entfernt in Java 6. Es ist die API, die die Interna der JVM für die Zwecke Debuggen und Profilieren.

aussetzt

JDWP (Java Debug Wire Protocol) ist ein Protokoll, das für die Übertragung von Befehlen und Antworten einen einfachen Mechanismus beschreibt. Soweit ich weiß, ist es der einzige Weg für einen Debugger außerhalb der JVM sitzt mit ihm zu kommunizieren und Schnittstelle mit dem JVMTI.

JDI (Java Debugger Interface) ist eine Client-Seite (Debugger-Seite) API, die, während die Verwendung von JDWP machen einige der Funktionen von JVMTI macht mehr oder weniger transparent.

Die bug in Bob Dobbs erwähnt Antwort betrifft die irreführende Fehlermeldung, und die Tatsache, dass die JVM versucht, JDWP zu laden einmal für jedes Mal, es in der Befehlszeile angegeben wird. Es ist nicht Staat überall, dass JDWP und JVMTI können nicht zusammen verwendet werden.

Weitere Informationen hier: https://www.ibm.com /support/knowledgecenter/ssw_ibm_i_74/rzaha/jpdebuga.htm

Andere Tipps

Ich lief in das gleiche Problem wie du, aber ich kam mit einem JVM Bug-Report auf ( http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6354345 ), die etwas Licht auf die Frage werfen. Es kommt im Grunde auf die Java-Agenten Bibliothek nach unten nicht immer dazu bestimmt ist, zweimal in derselben VM geladen zu werden. Saugt, aber scheint, wie es grundlegende Einschränkung des Agentensystems ist, dass Sie nicht beide gleichzeitig tun können.

Für mich war es das gleiche Problem wie-Code Bling Post, sie waren doppelte -Xrunjdwp nicht erkennen, dass es eine zweite -Xrunjdwp waren, wie es in der Variablen %JAVA_OPTIONS% versteckt wurde, Anwendungsserver-Startskript überprüfen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top