2015-09-16 10 views
5

Podczas debugowania programu java w środowisku Eclipse, widzę (np. W widoku Zmienne) zawartość dowolnej tablicy, zobacz poniższy obraz (w polu ByteArrayInputStream.buf).Jak wyświetlić długość tablicy w debugerze Eclipse?

Eclipse Variables view with an array

Ale nie mogę znaleźć długość pole tablicy w dowolnym miejscu. Czy istnieje sposób pokazania długości tablicy w debugerze Eclipse? Jak mogę to zrobić?

+2

Najnowszy odcinek array (np [500..599]) posiada długość. –

+0

można również sprawdzić długość na karcie Expression wystarczy dodać '' lub 'Array.length array.size()' itd – Rustam

Odpowiedz

3

Można użyć "Expressions" Widok i ocenia członek length:

Expression tab screenshot

Należy pamiętać, że ostatni wskaźnik jest mniejszy niż długość!

Choć pracuje publicznych członków tablicy, wydaje się, że obsada jest wymagane jawne dla członków chronione. Rozważmy następujący kod:

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

Teraz, gdy oceny is.buf, widok Ekspresja pokazuje zrzut tablicy, jak pokazano na pytanie, ale nie z oceny is.buf.length<error(s)_during_the_evaluation>. Jeśli dodamy do tego wyraźne oddanych do ByteArrayInputStream, ocena działa:

enter image description here

+0

Ale to nie działa dla ** ** prywatne lub chronione ** ** pola jak w moim przypadku : 'is.buf.length'. Wydruki Eclipse: ' buf nie może zostać rozwiązany lub nie jest polem' – dedek

+1

Aha problem był w rzeczywistości nieprawidłowy ('InputStream'). To wygląda dobrze: '((ByteArrayInputStream) jest) .buf.length' – dedek

+0

Dobra obserwacja! Nie wiem, dlaczego Ekspresator wyrażeń wymaga tutaj jawnego rzutowania (ponieważ już wie, że 'buf' jest tablicą), ale mogę dokładnie odtworzyć to, co mówisz ... –

3

Dziękuję @ ThorbjørnRavnAndersen za odpowiedź (komentarz). Masz rację, najnowszy segment tablicy (w moim przypadku: [1700..1768]) przechowuje długość.

Cały obraz:

the whole picture