Xem các chuỗi hoàn chỉnh trong khi gỡ lỗi trong Eclipse


166

Trong khi gỡ lỗi mã Java, các chuỗi trong các khung nhìn "Biến" và "Biểu thức" chỉ hiển thị cho đến một độ dài nhất định, sau đó Eclipse hiển thị "..."

Có cách nào để kiểm tra toàn bộ chuỗi? (Điều này giúp giảm bớt nỗi đau của việc thêm các báo cáo đăng nhập để gỡ lỗi ở mọi nơi)


bạn đang thấy hành vi này ở đâu? phần nào của trình gỡ lỗi?
skaffman

Mặt khác, đây có thể là một cách viết sai, vì nó có thể không phù hợp với bạn, nhưng nếu bạn sử dụng thư viện gỡ lỗi như java.util.logging hoặc log4j, bạn có thể dễ dàng biến các câu lệnh gỡ lỗi của mình (với các mức độ gỡ lỗi khác nhau) thành bản in hoặc logfiles và nó có thể cung cấp cho bạn cạnh mà việc lọc qua các chuỗi trong cửa sổ gỡ lỗi có thể không. Chỉ cần một suy nghĩ =)
corsiKa

Câu trả lời:


225

Trong chế độ xem Biến, bạn có thể nhấp chuột phải vào ngăn Chi tiết (phần hiển thị nội dung chuỗi) và chọn menu bật lên "Độ dài tối đa ...". Độ dài tương tự áp dụng cho cửa sổ bật lên thanh tra biểu thức và một vài nơi khác.

nhập mô tả hình ảnh ở đây


17
Cách tốt hơn giải pháp được chọn. Cảm ơn bạn!
Colin

13
Thật tốt khi chỉ ra rằng Chi tiết ngăn là phần hiển thị nội dung chuỗi.
Bnrdo

1
Làm thế nào để làm điều này trong nhật thực kepler? Xin vui lòng giúp đỡ
lừa

1
Tin tốt là sự thay đổi này dường như cũng ảnh hưởng đến độ dài được hiển thị khi di chuột qua một biến, kiểm tra trong cửa sổ "Kiểm tra" hoặc chế độ xem "Biểu thức" và hiển thị các giá trị trong chế độ xem "Hiển thị".
Steve Chambers

1
Tôi đã cập nhật giải pháp chính xác (giải pháp được chấp nhận trước đó là giải pháp duy nhất cho các phiên bản Eclipse thực sự cũ).
ragebiswas

134

Trong chế độ xem Biến, bạn nhấp chuột phải vào biến và chọn Thay đổi giá trị . Nếu biến của bạn rất lớn, bạn phải đợi vài phút (trong trường hợp này Eclipse không phản hồi các lệnh) nhưng cuối cùng, Eclipse sẽ hiển thị toàn bộ biến của bạn.


2
Tôi chỉ có thể nhìn thấy "data:image/bitmap;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQE... (length: 22869)". Đặt tùy chọn "Độ dài tối đa" không hoạt động và "Thay đổi giá trị" cũng có.
falko

@falko "Độ dài tối đa" không hoạt động đối với tôi, "Thay đổi giá trị" vẫn ổn (sau khi chờ vài giây, tùy thuộc vào độ dài thay đổi).
Umberto

Ít nhất là trên hệ thống của tôi, điều này chậm hơn đáng kể so với việc tăng "Độ dài tối đa" (xem câu trả lời khác).
sleske

nhật thực không phải là khá hài lòng về ý tưởng của bạn .. Ive đã cố gắng này và tôi chờ đợi từ 30 phút bây giờ, đối với bất kỳ phản ứng của nhật thực .. Buuut: Có vẻ như để làm việc;)
Joshit

22

Nếu bạn có một chuỗi thực sự dài, tôi sử dụng một chiến lược khác: kết xuất nó vào một tệp. Tôi có một đoạn mã tôi sử dụng trong chế độ xem Hiển thị, được đánh giá để kết xuất dữ liệu vào một tệp. Tôi sử dụng Commons IO, nhưng bạn có thể làm điều đó với các phương thức chỉ JDK.

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

Đương nhiên, bạn sẽ cần Commons IO JAR trong đường dẫn lớp của bạn để làm việc đó. Nếu bạn không, hãy dùng đến công việc của JDK.


5
cách giải quyết mát mẻ. Tôi, cá nhân, sẽ chấp nhận điều này là câu trả lời tốt nhất. Hãy cẩn thận: <tên tệp> phải được xác định cho hệ thống nơi JVM đang chạy, điều này tạo ra sự khác biệt nếu bạn gỡ lỗi từ xa, trong trường hợp đó, tệp sẽ được ghi trên hệ thống từ xa, không phải trên máy trạm nơi nhật thực đang chạy .
rexford

18

Cách tốt nhất để xem giá trị Chuỗi từ chế độ xem gỡ lỗi nhật thực là như dưới đây.

1) Chuyển sang chế độ xem gỡ lỗi trong Eclipse

2) Chọn biến mong muốn trong khung biến.

3) Nhấp chuột phải vào khu vực hiển thị của khung biến nơi hiển thị giá trị và nhấp vào Độ dài tối đa. Nhập giá trị char tối đa trong Ngăn Cấu hình Chi tiết.

4) Chúc mừng

nhập mô tả hình ảnh ở đây


1
Giải thích đồ họa này là thực sự hữu ích. +1
Bhavin Shah

3

Khi trình gỡ lỗi đạt đến điểm mà bạn muốn giá trị Chuỗi, chỉ cần nhập câu lệnh sysOut

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

Chọn câu lệnh trên, nhấp chuột phải-> Thực thi

Nó sẽ in giá trị trên bàn điều khiển


0

Đối với gỡ lỗi dựa trên javascript trên nhật thực, phương pháp "thay đổi giá trị" và phương pháp "Độ dài tối đa" đều thất bại đối với tôi, thêm đối tượng cần thiết để xem ( Biểu thức ) và sau đó Nhấp chuột phải vào biểu thức đã xem để chọn "Tải toàn bộ giá trị" là giải pháp duy nhất phù hợp với tôi, nhưng ngay cả điều này cũng chèn "\ n" không mong muốn vào đầu ra .

Lưu ý - "Độ dài tối đa" phải được đặt để "Tải toàn bộ giá trị" hoạt động khi nó tải các giá trị cho đến độ dài tối đa (mặc định trong nhật thực là 10000). Tham khảo câu trả lời trên để xem cách đặt Độ dài tối đa.


0

Không có "độ dài tối đa" trong Sao Hỏa Eclipse. Và, "giá trị thay đổi" chỉ hoạt động với "Biến", không phải "Biểu thức", vì vậy không có cách nào ở trên hoạt động với tôi.

nhập mô tả hình ảnh ở đây

Và, biểu thức được cắt ở giữa, không phải ở cuối. Tôi đoán họ đã thay đổi hành vi mặc định.

Điều duy nhất làm việc với tôi, là mở rộng chiều rộng của cột tên biểu thức và nhấp vào biểu thức để chọn tất cả để xem nội dung có độ dài đầy đủ.


0

Không có gì từ những điều trên làm việc cho tôi, hơn nữa, một số thành phần giao diện người dùng trong Eclipse của tôi không thể được tìm thấy như được mô tả. Tôi đang sử dụng STS 4.3.1.

Giá trị tôi cần là rất lớn, nó là một phần của yêu cầu JSON lớn. Giải pháp thay thế là sử dụng một biểu thức trong bảng điều khiển Debug Shell của Eclipse và để xuất chuỗi con của toàn bộ giá trị. Vì bạn có thể thấy giá trị một phần, hãy kiểm tra nó và sử dụng một vài chữ cuối cùng làm vị trí để xuất đoạn tiếp theo của chuỗi. Lặp lại phương pháp này cho đến khi có được thứ bạn cần:

String result = new String(reallyBigByteArrayValue, "UTF-8");
result.substring(result.indexOf("some-unique-text"));
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.