2012-09-19 7 views
12

Quando in debug (eclissi), non riesco a vedere il contenuto delle variabili nella vista delle variabili, né nella visualizzazione Espressioni, né nella visualizzazione Visualizzazione, se le variabili sono definite al di fuori di una classe anonima ma il debug è all'interno della classe anonima.Impossibile visualizzare il contenuto finale della variabile nella classe anonima durante il debug in Eclipse un'app per Android

Quando si tenta di visualizzare il contenuto in debug, viene visualizzato l'errore: x non può essere risolto in una variabile.

Nell'esempio seguente, x non può essere risolto:

private void someMethod(final Object x) { 
    new Runnable() { 
    public void run() { 
     Log.i(x); // x is printed correctly but cannot be resolved when in Debug 
    } 
    }.run(); 
} 

Questa domanda riguarda l'ambiente di sviluppo Eclipse - per quanto riguarda il debug Android. Non è una discussione sulla finale, né sulla compilazione - solo il debugging.

+0

Questo accade su Eclipse 4.2.0 e 3.7.1 sia su Ubuntu 11.10 e 12.04 –

+0

Aperto un bug: http://code.google.com/p/android/issues/detail?id=37662 –

+0

c'è una soluzione - la visualizzazione del variabile come membro dell'istanza allegata. Esempio: 'this $ 0' -> 'val $ x'. –

risposta

0

Ho avuto lo stesso problema di recente, ma l'aggiornamento dell'SDK di Android e il riavvio di Eclipse l'hanno risolto. Prova ad aggiornare l'SDK alla versione più recente.

+0

stato lì fatto che –

+0

non funziona, questo bug insinuato in là in Eclipse 4.3 ... e la sua sembra essere in ogni classe interna che è collegato al thread UI. Qualcosa è rotto e nessuno è veramente sicuro su come risolverlo. – JPM

1

Ho riscontrato problemi simili durante il debug di applicazioni che utilizza thread. Immagino che la tua applicazione sia multi-thread, perché ero solito affrontare cose come questa solo in quella situazione. Ciò potrebbe essere dovuto al fatto che quando si esegue il programma direttamente, la maggior parte dei thread verrà avviata contemporaneamente. Ma mentre nella modalità di debug uno dei tuoi thread che ha il set di breakpoint rimarrà, dove altri thread che sono stati avviati sarebbero già stati completati o viceversa. Questo è il motivo per cui la gente dice che eseguire il debug di un'applicazione multi-thread è un po 'più difficile a meno che non si mantenga la priorità o si sincronizzino i thread.

Spero che questa informazione aiuti. Quindi, invece di fermare il flusso con un punto di interruzione, prova a stampare il valore in cui devi conoscere il valore usando sysout o cose del genere, che è come eseguire il programma ma esegui il debug, a tuo modo :)

+2

Ah, i vecchi tempi del codice ... perché Eclipse non può risolvere questo problema ... è stato lì dall'ultima versione. – JPM