2011-03-13 22 views
5

Estoy usando Eclipse 3.5 y adjunté src.zip a mi configuración global en Eclipse. Ventanas -> Preferencias -> Java -> JRE instalados -> rt.jar - Fuente adjunta - ...../jdk/src.zipCómo depurar archivos .class en ECLIPSE?

Estoy en condiciones de poder ingresar al núcleo de java biblioteca .class archivos y ver el código fuente. Estoy construyendo una Clase que usa LinkedList y he establecido un punto de interrupción dentro de la clase LinkedList.

Cuando puedo depurar los puntos de interrupción en el código fuente (mis proyectos) están trabajando bien, pero cuando tengo que entrar en los .classes lib núcleo java me sale el siguiente error en mi Eclipse eclipse error

No es posible instale punto de interrupción en java.util.LinkedList debido a los atributos de número de línea faltantes. Modifique las opciones de compilación para generar atributos de número de línea.

Revisé mi configuración de compilador en Preferencias y encontré todas las opciones marcadas como verdaderas. enter image description here Sería genial si alguien puede ayudarme a resolver este problema.

Gracias de antemano.

Respuesta

6

Puede tener el conjunto de compiladores para incluir información de depuración en SU ​​clase de archivos, pero los archivos de clase en rt.jar no se compilaron de esa manera. Necesita recompilar toda la fuente para las clases en rt.jar (no para los débiles de corazón) o download a debug build of the jdk.

+0

Funcionó como un amuleto. Muchas gracias. Ha estado buscando esto. – AKh

+0

Hola David ... ¿Puedes decirme cómo hacer cambios en las .classes del núcleo de Java y compilarlas para ser utilizadas por mi proyecto? Por ejemplo: quiero modificar la variable privada - encabezado - en un público para asignar valores en la clase LinkedList para mi propósito de investigación. Estoy estudiando el comportamiento de LinkedList ... Lo apreciaría incluso si me señalas algunos recursos. – AKh

+0

No creo que sea una buena idea, y si solo desea acceder a variables privadas para la investigación, puede hacerlo a través de la reflexión. Por ejemplo, menos el manejo de excepciones: Lista list = new LinkedList (); list.add ("foo"); Campo header = list.getClass(). GetDeclaredField ("encabezado"); header.setAccessible (true); System.out.println (header.get (list)); –

2

Este blog posts facilitar una lista exhaustiva de puntos para comprobar

seguir los pasos si se compila utilizando Eclipse IDE

enter image description here

  1. Ir a windows > preferences > Java > compiler pantalla.
  2. Asegúrese de que la casilla Agregar atributos de número de línea a los archivos generados (utilizado por el depurador) está marcada.
  3. Compila de nuevo e intenta agregar un punto de interrupción y espero que funcione para ti.

Nota para la hormiga construye

seguir los pasos si se compila utilizando la utilidad ANT:

  1. comprobar el archivo build.xml y asegúrese de que el atributo de depuración se establece en true en la tarea javac
  2. Además, si está utilizando JBoss como servidor de aplicaciones, haga su re que ya ha abierto un puerto para encuadernación de socket de la conexión de máquina remota . Si no, solo asegúrese de que C:/jboss/bin/run.bat tiene una entrada con:
    "set JAVA_OPTS=%JAVA_OPTS% -Xdebug –Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n" para abrir el puerto 5000 y escuchar todas las conexiones de socket para la aplicación de depuración/java remota.
  3. Compila de nuevo e intenta agregar un punto de interrupción y espero que funcione para ti.
2

No debe utilizar un JRE con un src JDR adjunto como las clases JRE no son muy adecuadas para la depuración.

Deje que Eclipse busque entornos Java y luego seleccione el JDK de la lista resultante. Este entorno Java tendrá el src.zip conectado correctamente y usted debería poder investigar.

Tenga en cuenta que las clases incluso JDK no tienen información de depuración completo, por lo que no puede ver las variables locales, etc.

(Además, el panel de configuración del compilador sólo se aplica a su código. Las clases JRE son generadas previamente y el panel no los influencia)

Cuestiones relacionadas