Pregunta

He pasado los últimos 4 horas tratando de establecer la memoria Eclipse TPTP perfilado en una instancia de Tomcat que se deben ejecutar de forma remota (es decir, no en Eclipse). Esto debería ser posible según la TPTP y Agente docs controlador.

He instalado los componentes TPTP (4.6.0) en mi Eclipse (Galileo) Banco de trabajo, junto con el controlador de agente según la instrucciones en la página web. Para habilitar el agente, he añadido el siguientes opciones para la línea de comando que inicia la instancia de Tomcat:

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

y se añadieron los siguientes directorios a la parte delantera de la ruta:

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

Al intentar iniciar Tomcat llegué constantemente el siguiente error mensaje:

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

Me hice un montón de buscar en Google, pero no encontró nada relevante; Lo intenté reinstalar TPTP y varias versiones de Agent Controller.

Al final, el problema resultó ser que estaba empezando Tomcat con la opción "jpda", lo que se traduce en catalina.bat

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

La eliminación de la "jpda" argumento del comando causó JVMTI para empezar a trabajar.

Entonces, la pregunta es: no he encontrado nada durante cualquiera de mis búsquedas de indican que un agente JVMTI es incompatible con la depuración. lata alguien explicar lo que está pasando y por qué JVMTI + JDWP no es válida configuración?

¿Fue útil?

Solución

Ninguna de las respuestas hasta el momento son correctos y este es el primer golpe que aparece en Google si se consulta menciona el error, por lo que creo que se necesita una aclaración.

JVMTI y JDWP no el trabajo en conjunto, de hecho, por lo general, se deben utilizar juntos. Obtendrá ERROR: JDWP unable to get necessary JVMTI capabilities si no se especifica -Xrunjdwp (y / o posiblemente -agentlib:jdwp) más de una vez en la línea de comandos. Para solucionarlo, asegúrese de que sólo tiene uno de -Xrunjdwp o -agentlib:jdwp en su línea de comandos.

Para más detalles, sigue leyendo ...

JVMTI (interfaz de la herramienta de Java Virtual Machine) es el sucesor de JVMDI (Java Virtual Machine interfaz de depuración) y JVMPI (Java Virtual Machine Interface de perfiles). Se incorpora la funcionalidad de ambos JVMDI y JVMPI, ambos de los cuales fueron en desuso en Java 5 y se retira en Java 6. Es la API que expone el funcionamiento interno de la JVM para los fines de depuración y perfilado.

JDWP (Protocolo de alambre de depuración de Java) es un protocolo que describe un mecanismo simple para la transmisión de comandos y respuestas. Por lo que yo sé, es el único camino para un depurador sentado fuera de la JVM para comunicarse con él y para interactuar con el JVMTI.

JDI (depurador de Java Interface) es una API de cliente (del lado del depurador) que expone algunas de las características de JVMTI En la utilización del JDWP más o menos transparente.

El fallo menciona en Bob Dobbs de respuesta se refiere el mensaje de error equivocado, y el hecho de que la JVM intentará cargar JDWP una vez por cada vez que se especifica en la línea de comandos. No establece ninguna parte que JDWP y JVMTI no se pueden utilizar juntos.

Más información aquí: https://www.ibm.com /support/knowledgecenter/ssw_ibm_i_74/rzaha/jpdebuga.htm

Otros consejos

Me encontré con el mismo problema que tú, pero me encontré con un informe de error JVM ( http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6354345 ) que arrojar alguna luz sobre el tema. Básicamente se reduce a la biblioteca agente de Java no siempre está destinado a ser cargado dos veces en la misma máquina virtual. Chupa, pero parece que es limitación básica del sistema de agentes que no se puede hacer ambas cosas al mismo tiempo.

Para mí fue el mismo problema que Bling Código postal, que eran -Xrunjdwp duplicado no se dio cuenta que había una segunda -Xrunjdwp ya que estaba oculto en el %JAVA_OPTIONS% variables, comprobar su script de inicio del servidor de aplicaciones.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top