2010-02-24 22 views
6

Me encantaría aprender a depurar eclipse IDE. De vuelta a la época en que estaba usando VS para el desarrollo de .NET, puedo adjuntar VS a un proceso en cualquier momento y comenzar a rastrear el problema. Espero que haya algo similar con Eclipse, pero como novato en el mundo de Java, no sé nada de eso.Depurar eclipse IDE en sí

Mi eclipse recientemente cuelgo cuando lo ejecuto junto con iBUS (en Ubuntu 9.10). Espero poder descubrir qué es lo que realmente cuelga mi eclipse y evitarlo (imagine que su eclipse se cuelga y que todos sus archivos abiertos se cerraron. Simplemente me vuelve loco).

Respuesta

9

editar el archivo eclipse.ini una añada lo siguiente a la parte inferior (por debajo -vmargs):

-Xdebug 
-Xnoagent 
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 

Luego, en otro eclipse de la misma versión, puede importar los plugins que está interesado en la depuración. Archivo -> Importar ... -> Desarrollo de complementos -> Complementos y Fragmentos. Importar Desde la plataforma activa e Importar como "Proyectos con carpetas de origen", en la pestaña siguiente, seleccione los complementos que le interesen.

Establezca los puntos de interrupción según corresponda.

A continuación, cree en Configuraciones de depuración, cree una nueva "Aplicación Java remota". localhost, puerto 8000. Agregue los proyectos Java en la pestaña fuente y depure.

+0

Woot Woot esto era lo que estaba buscando –

2

Una cosa que puede hacer con cualquier aplicación Java para ver lo que está sucediendo en este momento es enviarla a kill -QUIT. Esto causará que la JVM descargue los rastreos de pila para todos sus hilos a stdout. Haga esto tres veces con un segundo en el medio y podrá ver qué hilos no se mueven bien.

Otra cosa que debe intentar es conectar un JConsole al proceso en ejecución.

+0

Hola, ¿pueden mostrarme cómo enviar un 'kill - QUIT'? –

+0

Has dicho que estás en Ubuntu, así que: 1) encuentra la identificación del proceso, tal vez usando ps auxw. 2) desde el shell 'kill -QUIT ' – Thilo

1

En el momento en que estaba usando VS para el desarrollo .NET, puedo adjuntar VS a un proceso en cualquier momento y comenzar a rastrear el problema.

La depuración remota también es posible en Java con Java Platform Debugger Architecture (JPDA), solo tiene que iniciar la aplicación que desea depurar con la depuración remota habilitada. Aquí está an article que muestra cómo hacer esto y cómo configurar Eclipse para depurar una aplicación de eliminación.

Tenga en cuenta que a partir de Java 5, se debe preferir la opción -agentlib:jdwp lo largo de los -Xdebug-Xrunjdwp y opciones como se explica en Sun VM Invocation Options.

Actualización: Eclipse es una aplicación Java por lo que debe ser posible añadir las opciones mencionadas en el artículo en eclipse.ini. Nunca lo intenté (me perdí el hecho de que quieres depurar Eclipse).

+0

El artículo me dice sobre la depuración de un archivo jar. Pero descubrí que eclipse es (¿parece?) Un archivo ejecutable nativo. ¿Cómo puedo decirle a eclipse que publique un mensaje de depuración en un puerto? –

0

Existen básicamente dos formas de depurar una aplicación Java (por ejemplo, Eclipse). Puede usar JConsole, pero no le dará muchos detalles. Para adjuntar JConsole, debe habilitar la depuración remota; esto necesita un argumento de JVM que pueda escribir en el archivo eclipse.ini justo al lado del ejecutable de Eclipse.

Otra opción es iniciar un entorno de trabajo en tiempo de ejecución desde Eclipse: esto se usa para probar sus propios complementos, pero como los complementos de Eclipse son iguales, es posible iniciar una sesión de depuración con una aplicación Eclipse. Para hacer esto, necesita al menos un complemento en su espacio de trabajo (por ejemplo, crear un nuevo proyecto de complemento de hello world), y luego puede depurar esto como una aplicación de Eclipse.

2

Hay a thread about finding cause of a freezing Eclipse.

Una de las soluciones sugiere comenzando Eclipse con -consolelog opción. Esto podría ser útil para echar un vistazo rápido a lo que está sucediendo (antes de realizar una depuración real).

Cuestiones relacionadas