2015-09-16 20 views
5

Durante il debug di un programma java in Eclipse, è possibile vedere (ad esempio nella vista Variabili ) il contenuto di un array arbitrario, vedere l'immagine seguente (con il campo ByteArrayInputStream.buf).Come visualizzare la lunghezza dell'array nel debugger di Eclipse?

Eclipse Variables view with an array

Ma non riesco a trovare il matrice di lunghezza campo da nessuna parte. C'è un modo per mostrare la lunghezza di un array nel debugger di Eclipse? Come posso farlo?

+2

Il segmento di matrice più recente (per esempio [500..599]) detiene la lunghezza. –

+0

puoi anche controllare la lunghezza dalla scheda Espressione aggiungendo semplicemente 'array.length' o' array.size() 'ecc. – Rustam

risposta

3

È possibile utilizzare la "Espressioni" vista e valutare la length membro:

Expression tab screenshot

Tenete a mente che l'ultimo indice è uno di meno che la lunghezza!

Mentre questo funziona per i membri dell'array pubblico , sembra che sia richiesto un cast esplicito per i membri protetti. Si consideri il codice seguente:

... 
ByteArrayInputStream is = new ByteArrayInputStream(new byte[1769]); 
... 

Ora, nel valutare is.buf, la vista Espressioni mostra un dump della matrice come mostrato in questione, ma valutando is.buf.length riesce con <error(s)_during_the_evaluation>. Se aggiungiamo un cast esplicito al ByteArrayInputStream, la valutazione funziona:

enter image description here

+0

Ma non funziona per i campi ** private ** o ** protected ** come nel mio caso : 'is.buf.length'. Eclipse stampa: ' buf non può essere risolto o non è un campo' – dedek

+1

Aha il problema era in realtà il tipo sbagliato (' InputStream'). Questo wok va bene: '((ByteArrayInputStream) è) .buf.length' – dedek

+0

Buona osservazione! Non so perché il valutatore di espressioni richieda qui un cast esplicito (poiché sa già che 'buf' è una matrice), ma posso riprodurre esattamente quello che dici ... –

3

Grazie @ ThorbjørnRavnAndersen per la tua risposta (commento). Hai ragione, l'ultimo segmento dell'array (nel mio caso: [1700..1768]) ha la lunghezza.

L'intero quadro:

the whole picture

Problemi correlati