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)


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


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.


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.


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


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


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.


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.


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"));
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.