2011-03-13 15 views
5

Sto usando Eclipse 3.5 e ho collegato src.zip alle mie impostazioni globali in Eclipse. Windows -> Preferenze -> Java -> JRE installati -> rt.jar - Collegamento sorgente - ...../jdk/src.zipCome eseguire il debug di file .class in ECLIPSE?

Sono in grado di intervenire con successo nel core Java libreria. Class file e visualizza il codice sorgente. Costruisco una classe che utilizza LinkedList e ho impostato un breakpoint all'interno della classe LinkedList.

Quando metto a punto i punti di interruzione nel mio codice sorgente (i miei progetti) stanno lavorando bene, ma quando ho bisogno di calarsi nei .classes lib fondamentali java ottengo il seguente errore nel mio Eclipse eclipse error

Impossibile Installa breakpoint in java.util.LinkedList a causa della mancanza di attributi Number line. Modificare le opzioni del compilatore per generare gli attributi del numero di riga.

Ho controllato le impostazioni del mio compilatore in Preferenze e ho trovato tutte le opzioni selezionate. enter image description here Sarebbe bello se qualcuno potesse aiutarmi a risolvere questo problema.

Grazie in anticipo.

risposta

6

È possibile che il compilatore abbia impostato l'inclusione delle informazioni di debug nei file di classe YOUR, ma i file di classe in rt.jar non sono stati compilati in questo modo. È necessario ricompilare tutta la sorgente per le classi in rt.jar (non per i deboli di cuore) o download a debug build of the jdk.

+0

Ha funzionato come un fascino. Grazie mille. È stato alla ricerca di questo. – AKh

+0

Ciao David ... Puoi dire come apportare modifiche alle classi di core Java e compilarle e utilizzarle dal mio progetto? Ad esempio: voglio modificare la variabile privata - header - in un pubblico per assegnare valori nella classe LinkedList per il mio scopo di ricerca? Studio il comportamento di LinkedList ... Apprezzerei anche se mi indicassi alcune risorse. – AKh

+0

Non penso sia una buona idea, e se vuoi semplicemente accedere a variabili private per la ricerca, puoi farlo attraverso la riflessione. Ad esempio, meno la gestione delle eccezioni: Lista list = new LinkedList (); list.add ("foo"); Field header = list.getClass(). GetDeclaredField ("header"); header.setAccessible (true); System.out.println (header.get (lista)); –

2

Questo blog posts invia un elenco completo di punti per verificare

esecuzione della procedura, si sta compilando con Eclipse IDE

enter image description here

  1. Vai a windows > preferences > Java > compiler schermo.
  2. Assicurarsi che la casella di controllo Aggiungi numero di riga ai file generati (utilizzato dal debugger) sia selezionata.
  3. Costruisci di nuovo e prova ad aggiungere un punto di interruzione e spero che dovrebbe funzionare per te.

Nota per formica costruisce

esecuzione della procedura, si compila utilizzando utility ANT:

  1. Controllare il file build.xml e assicurarsi che attributo debug è impostato su true in javac task
  2. Inoltre, se si utilizza JBoss come server di app, eseguire su re che sia già stata aperta una porta per il collegamento socket della connessione macchina remota . In caso contrario, assicurarsi che C:/jboss/bin/run.bat abbia una voce con:
    "set JAVA_OPTS=%JAVA_OPTS% -Xdebug –Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n" per aprire la porta 5000 per ascoltare tutte le connessioni socket per l'applicazione java di debug/remoto.
  3. Costruisci di nuovo e prova ad aggiungere un punto di interruzione e spero che dovrebbe funzionare per te.
2

Si consiglia di non utilizzare un JRE con una src JDR allegato come le classi JRE non sono adatti per il debug.

Consentire a Eclipse di cercare ambienti Java e quindi selezionare il JDK dall'elenco risultante. Questo ambiente Java avrà src.zip collegato correttamente e dovresti essere in grado di investigare.

Si noti che le classi anche JDK non dispongono di informazioni complete di debug disponibili, quindi non è possibile visualizzare le variabili locali, ecc

(Inoltre, il pannello delle impostazioni del compilatore si applica solo ai il codice. Le classi JRE sono pregenerato e il pannello non li influenza).

Problemi correlati