Wyświetlanie pełnych ciągów podczas debugowania w Eclipse

166

Podczas debugowania kodu Java ciągi znaków w widokach „Zmienne” i „Wyrażenia” są wyświetlane tylko do określonej długości, po czym Eclipse wyświetla „...”

Czy istnieje sposób na sprawdzenie całego ciągu? (To łagodzi ból związany z dodawaniem instrukcji logowania do debugowania wszędzie)

ragebiswas
źródło
gdzie widzisz to zachowanie? która część debuggera?
skaffman
Na marginesie, może to być błędne określenie, ponieważ może nie działać dla Ciebie, ale jeśli używasz biblioteki debugującej, takiej jak java.util.logging lub log4j, możesz łatwo zmienić swoje instrukcje debugowania (z różnymi poziomami debugowania) w wydruki lub logi i może dać ci przewagę, że przesiewanie ciągów w oknie debugowania może nie. Tylko myśl =)
corsiKa

Odpowiedzi:

225

W widoku Zmienne można kliknąć prawym przyciskiem myszy panel Szczegóły (sekcja, w której wyświetlana jest treść ciągu) i wybrać menu podręczne „Maksymalna długość…”. Ta sama długość dotyczy wyskakującego okienka inspektora wyrażeń i kilku innych miejsc.

wprowadź opis obrazu tutaj

Eugene Kuleshov
źródło
17
O wiele lepsze rozwiązanie niż wybrane. Dziękuję Ci!
Colin,
13
Warto zauważyć, że okienko szczegółów to sekcja, w której wyświetlana jest treść ciągu.
Bnrdo
1
Jak to zrobić w eclipse kepler? Pls help
Foolish
1
Dobrą wiadomością jest to, że ta zmiana wydaje się również wpływać na długość wyświetlaną po najechaniu kursorem na zmienną, inspekcji w oknie „Inspekcja” lub w widoku „Wyrażenia” i wyświetlaniu wartości w widoku „Wyświetl”.
Steve Chambers
1
Zaktualizowałem poprawne rozwiązanie (zaakceptowane wcześniej było jedynym rozwiązaniem dla naprawdę starych wersji Eclipse).
ragebis miał miejsce
134

W widoku Zmienne kliknij zmienną prawym przyciskiem myszy i wybierz Zmień wartość . Jeśli twoja zmienna jest ogromna, musisz poczekać kilka minut (w tym przypadku Eclipse nie reaguje na polecenia), ale ostatecznie Eclipse pokaże całą zmienną.

Umberto
źródło
2
Widzę tylko "data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)". Ustaw opcję „Maksymalna długość”, która nie działa, a także opcję „Zmień wartość”.
falko
@falko „Maksymalna długość” nie działała dla mnie, „Zmień wartość” było w porządku (po odczekaniu kilku sekund, w zależności od zmiennej długości).
Umberto
Przynajmniej w moim systemie jest to znacznie wolniejsze niż zwiększenie „Maksymalna długość” (zobacz inną odpowiedź).
sleske
eclipse nie jest do końca zadowolony z twojego pomysłu .. Próbowałem tego i czekam od 30 minut na jakąkolwiek odpowiedź zaćmienia .. Buuut: Wydaje się, że działa;)
Joshit
22

Jeśli masz naprawdę długi łańcuch, używam innej strategii: zrzucam go do pliku. Mam fragment kodu, którego używam w widoku Display, który jest oceniany w celu zrzucenia danych do pliku. Używam Commons IO, ale możesz to zrobić tylko metodami JDK.

org.apache.commons.io.FileUtils.writeStringToFile(new java.io.File("<filename>"), <expression to evaluate>);

Oczywiście będziesz potrzebować pliku Commons IO JAR w swojej ścieżce klas, aby to zadziałało. Jeśli nie, skorzystaj z JDK.

zvikico
źródło
5
fajne obejście. Osobiście uznałbym tę odpowiedź za najlepszą. Uwaga: <nazwa pliku> musi być zdefiniowana dla systemu, w którym działa JVM, co ma znaczenie, jeśli jesteś zdalnym debugowaniem, w którym to przypadku plik zostanie zapisany w systemie zdalnym, a nie na stacji roboczej, na której działa eclipse .
rexford
18

Najlepszym sposobem wyświetlenia wartości String z widoku debugowania zaćmienia jest poniższy sposób.

1) Przełącz się do widoku debugowania w Eclipse

2) Wybierz żądaną zmienną w panelu zmiennych.

3) Kliknij prawym przyciskiem myszy obszar wyświetlania panelu zmiennych, w którym wyświetlana jest wartość, i kliknij opcję Maksymalna długość. Wprowadź maksymalną wartość znaków w okienku szczegółów konfiguracji.

4) Pozdrawiam

wprowadź opis obrazu tutaj

Waqas Ahmed
źródło
1
To graficzne wyjaśnienie jest naprawdę pomocne. +1
Bhavin Shah
3

Gdy debugger osiągnie punkt, w którym chcesz uzyskać wartość String, po prostu wpisz instrukcję sysOut

System.out.println("The value is : \n " + query);

Wybierz powyższą instrukcję, kliknij prawym przyciskiem myszy -> Wykonaj

Wyświetli wartość na konsoli

Sonali
źródło
0

W przypadku debugowania opartego na javascript w eclipse, metoda „zmień wartość” i metoda „Maksymalna długość” nie powiodły się. Jedynym rozwiązaniem jest dodanie wymaganego obiektu do obserwacji ( Wyrażenia ), a następnie kliknięcie obserwowanego wyrażenia prawym przyciskiem myszy w celu wybrania opcji „Załaduj pełną wartość” to działa dla mnie, ale nawet to wstawia niechciane "\ n" na wyjściu .

Uwaga - „Maksymalna długość” musi być ustawiona, aby „Załaduj pełną wartość” działała, ponieważ ładuje wartości do maksymalnej długości (domyślnie w zaćmieniu jest 10000). Zapoznaj się z powyższą odpowiedzią, aby zobaczyć, jak ustawić maksymalną długość.

Książę Champappilly
źródło
0

W Eclipse Mars nie ma wartości „maxLength”. „Zmień wartość” działa tylko ze „Zmiennymi”, a nie „Wyrażeniami”, więc żadne z powyższych nie działa dla mnie.

wprowadź opis obrazu tutaj

A wyrażenie jest ucięte w środku, a nie na końcu. Myślę, że zmienili domyślne zachowanie.

Jedyną rzeczą, która działa dla mnie, jest rozszerzenie szerokości kolumny nazwy wyrażenia i kliknięcie wyrażenia, aby zaznaczyć je wszystkie, aby zobaczyć pełną zawartość.

WesternGun
źródło
0

Nic z powyższego nie działało u mnie, ponadto niektórych elementów interfejsu użytkownika w moim Eclipse nie można znaleźć zgodnie z opisem. Używam STS 4.3.1.

Wartość, której potrzebowałem, była naprawdę duża, jest częścią ogromnego żądania JSON. Obejściem problemu jest użycie wyrażenia w konsoli Eclipse Debug Shell i wyprowadzenie podłańcucha całej wartości. Ponieważ możesz zobaczyć wartość częściową, sprawdź ją i użyj kilku ostatnich literałów jako pozycji do wyprowadzenia następnej części ciągu. Powtarzaj to podejście, aż uzyskasz to, czego potrzebujesz:

String result = new String(reallyBigByteArrayValue, "UTF-8");
result.substring(result.indexOf("some-unique-text"));
user07
źródło