การดูสตริงที่สมบูรณ์ขณะทำการดีบักใน Eclipse


166

ในขณะที่การดีบักโค้ด Java สตริงในมุมมอง "ตัวแปร" และ "นิพจน์" แสดงจนถึงความยาวที่แน่นอนหลังจากที่ Eclipse แสดง "... "

มีวิธีตรวจสอบสตริงทั้งหมดหรือไม่? (สิ่งนี้ช่วยลดความเจ็บปวดของการเพิ่มคำสั่งการบันทึกสำหรับการดีบักได้ทุกที่)


คุณเห็นพฤติกรรมนี้อยู่ที่ไหน ส่วนใดของดีบักเกอร์
skaffman

ในบันทึกด้านข้างนี่อาจเป็นชื่อเรียกผิดเพราะมันอาจไม่เหมาะกับคุณ แต่ถ้าคุณใช้ห้องสมุดดีบั๊กเช่น java.util.logging หรือ log4j คุณสามารถเปลี่ยนคำสั่งดีบั๊กของคุณได้ งานพิมพ์หรือเพื่อ logfiles และมันอาจทำให้คุณมีขอบที่กลั่นกรองผ่านสตริงในหน้าต่างแก้ปัญหาอาจไม่ แค่คิด =)
corsiKa

คำตอบ:


225

ในมุมมองตัวแปรคุณสามารถคลิกขวาที่บานหน้าต่างรายละเอียด (ส่วนที่แสดงเนื้อหาสตริง) และเลือกเมนูป๊อปอัพ "ความยาวสูงสุด ... " ความยาวเท่ากันนั้นใช้กับป๊อปอัพตัวตรวจสอบนิพจน์และอีกสองแห่ง

ป้อนคำอธิบายรูปภาพที่นี่


17
วิธีที่ดีกว่าทางออกที่เลือกไว้ ขอบคุณ!
โคลิน

13
เป็นการดีที่จะชี้ให้เห็นว่า Details Pane เป็นส่วนที่แสดงเนื้อหาสตริง
Bnrdo

1
วิธีการทำเช่นนี้ใน eclipse kepler? กรุณาช่วย
โง่

1
ข่าวดีก็คือการเปลี่ยนแปลงนี้ดูเหมือนจะส่งผลกระทบต่อความยาวที่ปรากฏเมื่อวางเมาส์เหนือตัวแปรตรวจสอบในหน้าต่าง "ตรวจสอบ" หรือดู "นิพจน์" และแสดงค่าในมุมมอง "แสดงผล"
Steve Chambers

1
ฉันได้อัปเดตโซลูชันที่ถูกต้องแล้ว (โซลูชันที่ยอมรับก่อนหน้านี้เป็นโซลูชันเดียวสำหรับเวอร์ชัน Eclipse ที่เก่าจริงๆ)
ragebiswas

134

ในตัวแปรดูคุณคลิกขวาที่ตัวแปรและเลือกเปลี่ยนค่า หากตัวแปรของคุณมีขนาดใหญ่คุณต้องรอสักครู่ (ในกรณีนี้ Eclipse ไม่ตอบสนองต่อคำสั่ง) แต่ในที่สุด Eclipse จะแสดงตัวแปรของคุณทั้งหมด


2
"data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)"ฉันสามารถดูเท่านั้น ตั้งค่าตัวเลือก "ความยาวสูงสุด" ไม่ทำงานและ "เปลี่ยนค่า" ด้วย
falko

@falko "ความยาวสูงสุด" ไม่ทำงานสำหรับฉัน "เปลี่ยนค่า" ก็โอเค (หลังจากรอสักครู่ขึ้นอยู่กับความยาวของตัวแปร)
Umber ถึง

อย่างน้อยในระบบของฉันนี้เป็นอย่างมากช้ากว่าที่เพิ่มขึ้น "แม็กซ์ความยาว" (ดูคำตอบอื่น ๆ )
sleske

คราสไม่ได้มีความสุขมากเกี่ยวกับความคิดของคุณ .. Ive พยายามนี้และผมรอตั้งแต่ 30 นาทีตอนนี้สำหรับการตอบสนองของคราส .. Buuut ใด ๆ : มันดูเหมือนว่าจะทำงาน;)
Joshit

22

หากคุณมีสตริงที่ยาวมาก ๆ ฉันจะใช้กลยุทธ์ที่แตกต่าง: ทิ้งมันลงในไฟล์ ฉันมีข้อมูลโค้ดที่ฉันใช้ในมุมมองดิสเพลย์ซึ่งถูกประเมินเพื่อถ่ายโอนข้อมูลไปยังไฟล์ ฉันใช้ Commons IO แต่คุณสามารถทำได้ด้วยวิธีการ JDK เท่านั้น

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

โดยปกติคุณจะต้องใช้ IO JAR ในการเรียนของคุณ หากคุณไม่ต้องการทำงานกับ JDK


5
วิธีแก้ปัญหาเย็น โดยส่วนตัวฉันจะยอมรับคำตอบนี้เป็นคำตอบที่ดีที่สุด Caveat: <filename> จะต้องมีการกำหนดไว้สำหรับระบบที่ JVM กำลังทำงานอยู่ซึ่งสร้างความแตกต่างหากคุณทำการดีบักแบบรีโมทซึ่งในกรณีนี้ไฟล์จะถูกเขียนบนระบบระยะไกลไม่ใช่ในเวิร์กสเตชันที่ eclipse ทำงานอยู่ .
rexford

18

วิธีที่ดีที่สุดในการดูค่าสตริงจากมุมมองการดีบัก eclipse มีดังนี้

1) สลับเป็นมุมมองดีบักใน Eclipse

2) เลือกตัวแปรที่ต้องการในบานหน้าต่างตัวแปร

3) คลิกขวาบนพื้นที่แสดงของบานหน้าต่างตัวแปรที่แสดงค่าและคลิกที่ความยาวสูงสุด ป้อนค่าถ่านสูงสุดใน Configure Details Pane

4) ไชโย

ป้อนคำอธิบายรูปภาพที่นี่


1
คำอธิบายกราฟิกนี้มีประโยชน์จริงๆ +1
Bhavin Shah

3

เมื่อดีบักเกอร์ถึงจุดที่คุณต้องการค่าสตริงเพียงพิมพ์คำสั่ง sysOut

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

เลือกข้อความด้านบนคลิกขวา -> ดำเนินการ

มันจะพิมพ์ค่าบนคอนโซล


0

สำหรับการดีบัก javascript จาก eclipse วิธีการ "เปลี่ยนค่า" และวิธี "ความยาวสูงสุด" ทั้งคู่ล้มเหลวสำหรับฉันเพิ่มวัตถุที่ต้องการดู ( นิพจน์ ) จากนั้นคลิกขวาที่นิพจน์ที่เฝ้าดูเพื่อเลือก "โหลดค่าเต็ม"เป็นวิธีแก้ไขปัญหาเดียว ว่างานสำหรับฉัน แต่แม้แทรกนี้ที่ไม่พึงประสงค์ "\ n" ในการส่งออก

หมายเหตุ - ต้องตั้งค่า "ความยาวสูงสุด" เพื่อให้ "โหลดเต็มมูลค่า" เพื่อทำงานตามที่โหลดค่าจนถึงความยาวสูงสุด (ค่าเริ่มต้นใน eclipse คือ 10000) อ้างอิงคำตอบข้างต้นเพื่อดูวิธีตั้งค่าความยาวสูงสุด


0

ไม่มี "maxLength" ใน Eclipse Mars และ "ค่าการเปลี่ยนแปลง" ใช้ได้กับ "ตัวแปร" เท่านั้นไม่ใช่ "นิพจน์" ดังนั้นจึงไม่สามารถใช้งานได้สำหรับฉัน

ป้อนคำอธิบายรูปภาพที่นี่

และการแสดงออกจะถูกตัดตรงกลางไม่ใช่ตอนท้าย ฉันเดาว่าพวกเขาเปลี่ยนพฤติกรรมเริ่มต้น

สิ่งเดียวที่ใช้ได้ผลสำหรับฉันคือการขยายความกว้างของคอลัมน์ชื่อนิพจน์และคลิกนิพจน์เพื่อเลือกทั้งหมดเพื่อดูเนื้อหาแบบเต็ม


0

ไม่มีอะไรจากข้างต้นทำงานให้ฉันนอกจากนี้องค์ประกอบส่วนติดต่อผู้ใช้บางอย่างใน Eclipse ของฉันไม่สามารถพบได้ตามที่อธิบายไว้ ฉันใช้ STS 4.3.1

ค่าที่ฉันต้องการมีขนาดใหญ่มากมันเป็นส่วนหนึ่งของคำขอ JSON ขนาดใหญ่ วิธีแก้ปัญหาคือการใช้นิพจน์ในคอนโซล Eclipse Debug Shell และเพื่อแสดงผลสตริงย่อยของค่าทั้งหมด เนื่องจากคุณสามารถเห็นค่าบางส่วนตรวจสอบและใช้ตัวอักษรสองสามตัวสุดท้ายเป็นตำแหน่งที่จะส่งออกชิ้นถัดไปของสตริง ทำซ้ำวิธีนี้จนกว่าจะได้สิ่งที่คุณต้องการ:

String result = new String(reallyBigByteArrayValue, "UTF-8");
result.substring(result.indexOf("some-unique-text"));
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.