2009-12-15 25 views
36

Me pregunto si hay alguna solución para Eclipse IDE para depurar el código Java para el que no tengo ninguna fuente, es decir, para depurar el código decompilado dinámicamente, recorrerlo, etc. Traté de usar JD-Eclipse, JadClipse, y estos complementos funcionan muy bien si quiero ver algunos archivos de clase, pero cuando depuro, obtengo "Fuente no encontrada". - ¿Cómo puedo "adjuntar" estos complementos para "proporcionar" la fuente?Cómo depurar el código compilado de Java en Eclipse

Mi entorno:

  • Eclipse 3.5
  • Windows XP (pero busco una solución multiplataforma, si es posible)

Gracias.

+0

Si decompilados puede que no se compile de nuevo con -g y dedicarse a depuración como lo haría su o wn código fuente. –

+0

¿Volvería a compilar el resultado de la fuente descompilada en exactamente los mismos archivos de clase? Yo pensaría que no. Pero si el OP puede reemplazar los archivos de clase con los suyos, entonces supongo que esto es factible. –

+0

Tenga en cuenta que IntelliJ 14+ tiene un descompilador integrado. –

Respuesta

13

tengo buena experiencia con JadClipse - http://jadclipse.sourceforge.net/wiki/index.php/Main_Page - no es un sitio de actualización en http://jadclipse.sf.net/update

para obtener los mejores resultados, el uso de JAD y configurarlo para listar los números de línea como comentarios que permitirán la salida, donde el código está en la línea correcta. Esto es mejor para las sesiones de depuración.

A continuación, configúrelo como vista predeterminada para las clases. Ver la documentación para más detalles. Esto funciona bien para mi.

+0

Bueno, este enfoque es el más adecuado, parece funcionar (descompila las clases de Java sobre la marcha, muestra el origen mientras se depura). Parece que estaba en una buena forma, pero no pude reiniciar Eclipse algunas veces. Sería perfecto si todas las líneas de archivo descompilado coincidieran, porque ahora obtengo manny MALIGNADO. – NSPKUWCExi2pr8wVoGNk

+0

De acuerdo, pero jad no es de código abierto y el autor parece haberlo abandonado. Esperemos que los nuevos descompiladores soportados por jadclipse eventualmente sean incluso mejores que jad. –

+0

El MALIGNADO se debe a la forma en que jad crea la fuente decompilada. Creo que escribe en serie, y no se puede mover hacia adelante y hacia atrás para mejorar las cosas. –

2

Descompile todas las clases, coloque todos los archivos Java ordenados en la jerarquía correcta (directorio para el paquete, etc.) y luego agréguelos como el origen del contenedor original haciendo clic derecho en el archivo jar -> Archivo adjunto Java Source - > Carpeta externa.

También puede tenerlos dentro de una carpeta en el proyecto (haga clic en Espacio de trabajo en este caso)

+0

¿Qué descompilador recomendaría? –

+0

No he hecho decompilaciones últimamente (la ventaja de código abierto ...) pero recuerdo que JAD y JODE dieron buenos resultados. Ver más en http://stackoverflow.com/questions/31353/ y http://stackoverflow.com/questions/1384619/ –

+0

Sí, estaba considerando este enfoque, pero si hay muchas bibliotecas, esto se vuelve demasiado molesto, así que Estoy buscando una "manera automática" sin ningún gasto adicional. – NSPKUWCExi2pr8wVoGNk

3

Este plugin es de esperar debería ser de ayuda. JD-Eclipse

en Eclipse ventana abierta -> Preferencias -> General -> Editores -> Asociaciones de archivos Select * .class de tipo de archivo asociarlo con JD-Eclipse Set como predeterminada

buena suerte

+3

Esto no funcionó con la depuración, para mí. – NSPKUWCExi2pr8wVoGNk

+0

No funcionó –

15

Tengo el mismo problema. Hoy en día, ningún descompilador es eficiente para depurar el código compilado de Java. Estoy trabajando en JD-Eclipse. En los próximos 3 a 6 meses, el diseño de JD-Eclipse debería mejorarse realmente. Comenzaremos a depurar clases sin fuentes y resolveremos algunos problemas insolubles.

+0

Cool :-) Por favor, háganos saber –

+0

@ Emmanuel Dupuy: ¿algún progreso en "clases de depuración sin fuentes"? – rafalmag

+1

@rafalmag El algoritmo de realineación está listo. Puede probarlo aquí: http://java.decompiler.free.fr/?q=preview. Su integración en JD-Eclipse llevará algunos meses. Es razonable decir que estará listo en diciembre. Actualmente, JD-usted-puede usar Eclipse + la extensión de Alex Kosinsky: http://sourceforge.net/projects/realignmentjd –

3

Puede usar JD-GUI para descompilar archivos jar y guardar todo el lote en un archivo zip de origen que luego se puede agregar a la lista de búsqueda de origen (a través de Configurar ruta de compilación).

El problema con JD-GUI es que los números de línea están fuera lo que hace que la depuración muy difícil, por lo que necesita

  1. extraer los archivos de origen del archivo zip fuente descompilada
  2. Ejecutar la secuencia de comandos encontrado en https://bushlife.com.au/groups/python/wiki/7539a/Adjust_line_numbers_in_file.html
  3. comprimir la fuente genera una copia de seguridad
  4. añadirlo como la ruta de origen asociado con el archivo de java - mediante Configurar Vía de construcción después de un clic derecho en el archivo jar en su proyecto java.
+0

¡Esta es la primera mención de una solución para los números de línea que he visto! Gracias. Lamentablemente, la página de inicio no funciona. – sandos

+0

Acabo de comprobar el sitio. Si aún tiene problemas, puede enviar detalles específicos a araña en el sitio. Se arrastrará por todo el problema. – sweetfa

+0

Logré descargar y usar el script, muy agradable. Tiene un manejo molesto de los números de ropa fuera de servicio, pero se puede solucionar. – sandos

6

Fragmento de realineación para el plugin de host JD-Eclipse. Este plug-in para Eclipse hace que los números de línea de código descompilados sean realmente apropiados para los números de línea del archivo java-class. Como resultado, se vuelve posible la depuración sin código fuente. https://sourceforge.net/projects/realignmentjd/

2

La solución que funcionó para mí es el uso de la JD-Eclipse después de aplicar el parche: http://java.decompiler.free.fr/?q=node/464

Esta es una extensión de jd-Eclipse, que se vuelve a alinear el código después de descompilación.

¡Al depurar con eclipse, solo necesita tener los archivos jar en el classpath y listo! No hay necesidad de descompilar el frasco entero, realinear o en absoluto ... Sólo depuración y ser feliz :-)

Así es como se hace: http://gauchoacomecable.wordpress.com/2011/10/14/eclipse-debug-java-without-source-code-jd-eclipse-and-realignment/

0

He mejorado la "realineación para JD Eclipse" plugin para alinea correctamente las enumeraciones y campos, y lo publicó junto con JD Eclipse en mi propio sitio de actualización: http://mchr3k-eclipse.appspot.com/

Los detalles sobre mis cambios: http://mchr3k-coding.blogspot.co.uk/2012/07/realignment-for-jd-eclipse.html

+0

Ha utilizado el mismo parche como [otro proyecto] (http://gauchoacomecable.wordpress.com/2011/10/14/eclipse-debug-java-without-source-code-jd-eclipse-and-realignment/) ? Lástima que esta característica no haya ido al código maestro, entonces no tendremos dos códigos. –

+0

No. Según http://mchr3k.github.com/jdeclipse-realign/ Hice un proyecto diferente. – mchr

Cuestiones relacionadas