Melihat string lengkap saat debugging di Eclipse

166

Saat men-debug kode Java, String dalam tampilan "Variabel" dan "Ekspresi" hanya muncul hingga panjang tertentu, setelah itu Eclipse menunjukkan "..."

Apakah ada cara untuk memeriksa seluruh string? (Ini memudahkan rasa sakit menambahkan pernyataan logging untuk debugging di mana-mana)

ragebis adalah
sumber
di mana Anda melihat perilaku ini? bagian mana dari debugger?
skaffman
Di samping catatan, ini mungkin keliru, karena mungkin tidak bekerja untuk Anda, tetapi jika Anda menggunakan perpustakaan debugging seperti java.util.logging atau log4j, Anda dapat dengan mudah mengubah pernyataan debug Anda (dengan berbagai tingkat debugging) menjadi cetakan atau ke file log dan mungkin memberi Anda tepi yang menyaring string di jendela debug mungkin tidak. Hanya pemikiran =)
corsiKa

Jawaban:

225

Pada tampilan Variables Anda dapat mengklik kanan pada panel Details (bagian di mana konten string ditampilkan) dan pilih menu popup "Max Length ...". Panjang yang sama berlaku untuk popup inspektur ekspresi dan beberapa tempat lainnya.

masukkan deskripsi gambar di sini

Eugene Kuleshov
sumber
17
Solusi yang jauh lebih baik daripada yang dipilih. Terima kasih!
Colin
13
Bagus untuk menunjukkan bahwa Panel Detail adalah bagian tempat konten string ditampilkan.
Bnrdo
1
Bagaimana melakukan ini di gerhana kepler? Tolong bantu
Bodoh
1
Berita baiknya adalah perubahan ini juga tampaknya memengaruhi panjang yang ditampilkan saat mengarahkan variabel, memeriksa di jendela "Periksa" atau tampilan "Ekspresi" dan menampilkan nilai dalam tampilan "Tampilan".
Steve Chambers
1
Saya telah memperbarui solusi yang benar (yang diterima sebelumnya adalah satu-satunya solusi untuk versi Eclipse yang benar-benar lama).
ragebis adalah
134

Pada tampilan Variabel Anda klik kanan pada variabel dan pilih Ubah nilai . Jika variabel Anda sangat besar, Anda harus menunggu beberapa menit (dalam hal ini Eclipse tidak menanggapi perintah) tetapi pada akhirnya Eclipse akan menunjukkan variabel Anda sepenuhnya.

Umberto
sumber
2
Saya hanya bisa melihat "data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)". Setel opsi "Panjang Maks." Tidak berfungsi dan "Ubah nilai" juga.
falko
@falko "Max Panjang" tidak bekerja untuk saya, "Ubah nilai" tidak apa-apa (setelah menunggu beberapa detik, tergantung pada panjang variabel).
Umberto
Setidaknya di sistem saya, ini jauh lebih lambat daripada meningkatkan "Max Panjang" (lihat jawaban lain).
sleske
gerhana tidak cukup senang dengan ide Anda .. Saya sudah mencoba ini dan saya menunggu sejak 30 menit sekarang, untuk setiap tanggapan dari gerhana .. Buuut: Tampaknya bekerja;)
Joshit
22

Jika Anda memiliki string yang sangat panjang, saya menggunakan strategi yang berbeda: membuangnya ke file. Saya memiliki potongan kode yang saya gunakan dalam tampilan tampilan, yang dievaluasi untuk membuang data ke file. Saya menggunakan Commons IO, tetapi Anda dapat melakukannya dengan metode JDK saja.

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

Tentu saja, Anda akan membutuhkan Commons IO JAR di classpath Anda agar bisa berfungsi. Jika tidak, gunakan pekerjaan JDK.

zvikico
sumber
5
solusi keren. Saya, secara pribadi, akan menerima yang ini sebagai jawaban terbaik. Peringatan: <filename> harus ditentukan untuk sistem di mana JVM berjalan, yang membuat perbedaan jika Anda melakukan debug jarak jauh, dalam hal ini file akan ditulis pada sistem jarak jauh, bukan pada workstation tempat gerhana berjalan .
rexford
18

Cara terbaik untuk melihat nilai String dari tampilan debug gerhana adalah sebagai berikut.

1) Beralih ke tampilan debug di Eclipse

2) Pilih variabel yang diinginkan di panel variabel.

3) Klik kanan pada area tampilan panel variabel tempat nilainya ditampilkan dan klik Max Panjang. Masukkan nilai karakter maksimum di Panel Konfigurasi Detail.

4) Ceria

masukkan deskripsi gambar di sini

Waqas Ahmed
sumber
1
Penjelasan grafis ini sangat membantu. +1
Bhavin Shah
3

Ketika debugger mencapai titik di mana Anda menginginkan nilai String, ketikkan saja pernyataan sysOut

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

Pilih pernyataan di atas, klik kanan-> Jalankan

Ini akan mencetak nilai pada konsol

Sonali
sumber
0

Untuk debugging berbasis javascript pada eclipse, metode "ubah nilai" dan metode "Panjang Max" gagal untuk saya, menambahkan objek yang diperlukan untuk ditonton ( Ekspresi ) dan kemudian Mengklik kanan ekspresi yang ditonton untuk memilih "Muat Nilai Penuh" adalah satu-satunya solusi itu bekerja untuk saya, tetapi bahkan ini menyisipkan "\ n" yang tidak diinginkan dalam output .

Catatan - "Max panjang" harus ditetapkan untuk "Muat Nilai Penuh" untuk bekerja karena memuat nilai hingga panjang maks (default dalam gerhana adalah 10.000). Lihat jawaban di atas untuk melihat cara mengatur panjang Max.

Pangeran Champappilly
sumber
0

Tidak ada "maxLength" di Eclipse Mars. Dan, "nilai perubahan" hanya berfungsi dengan "Variabel", bukan "Ekspresi", jadi tidak satu pun di atas yang berfungsi untuk saya.

masukkan deskripsi gambar di sini

Dan, ekspresi dipotong di tengah, bukan di akhir. Saya kira mereka mengubah perilaku default.

Satu-satunya hal yang berfungsi untuk saya, adalah memperluas lebar kolom nama ekspresi, dan klik ekspresi untuk memilih semuanya untuk melihat konten panjang penuh.

WesternGun
sumber
0

Tidak ada yang di atas bekerja untuk saya, apalagi, beberapa elemen antarmuka pengguna di Eclipse saya tidak dapat ditemukan seperti yang dijelaskan. Saya menggunakan STS 4.3.1.

Nilai yang saya butuhkan sangat besar, itu adalah bagian dari permintaan JSON yang sangat besar. Solusinya adalah dengan menggunakan ekspresi di konsol Eclipse Debug Shell dan untuk output substring dari seluruh nilai. Karena Anda dapat melihat nilai parsial, periksalah dan gunakan beberapa literal terakhir sebagai posisi untuk menampilkan potongan string berikutnya. Ulangi pendekatan ini sampai mendapatkan yang Anda butuhkan:

String result = new String(reallyBigByteArrayValue, "UTF-8");
result.substring(result.indexOf("some-unique-text"));
pengguna07
sumber