Cửa sổ nhật ký của tôi trong Eclipse chỉ hiển thị một vài dòng đầu tiên của StackTrace cho mỗi ngoại lệ. Điều này có nghĩa là tôi thường không thể nhìn thấy một ngoại lệ xảy ra. Có cách nào để thay đổi cài đặt này không?Cửa sổ Eclipse Logcat cắt các dấu vết ngăn xếp ngoại lệ
Trả lời
Nếu bạn đang đề cập đến phần "... thêm 12 dòng ...", bạn chỉ thấy rằng đối với trường hợp ngoại lệ là nguyên nhân của một ngoại lệ khác. Nếu phần trên cùng của dấu vết ngăn xếp giống với dấu vết trước đó, toàn bộ các khung hình chỉ được hiển thị cho ngoại lệ ngoài cùng, và các dấu vết khác nhận được điều trị "...".
Đặt một cách khác, đoạn của dấu vết không được hiển thị là bản sao của dấu vết xuất hiện sớm hơn trong chuỗi nguyên nhân ngoại lệ. Ví dụ: giả sử tôi có mã nơi phương thức main()
gọi one()
, gọi số two()
, v.v. four()
ném ngoại lệ. two()
bắt và ném lại. Trường hợp ngoại lệ sẽ trông như thế này:
java.lang.RuntimeException: re-throw
at Foo.two(Foo.java:14)
at Foo.one(Foo.java:7)
at Foo.main(Foo.java:3)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: first
at Foo.four(Foo.java:23)
at Foo.three(Foo.java:19)
at Foo.two(Foo.java:12)
... 3 more
sự "do" ngoại lệ nói "... hơn 3" chứ không phải niêm yết rõ ràng one()
, main()
, và dalvik.system.NativeStart.main
. Vì vậy, để có được dấu vết đầy đủ của ngoại lệ ban đầu, bạn sẽ bắt đầu bằng cách đọc dấu vết của nó, sau đó tiếp tục theo dõi ở trên.
Lưu ý không có sự chồng chéo - two()
xuất hiện trong cả hai, nhưng trong "đầu tiên" theo dõi nó trên cuộc gọi đến three()
, và trong "tái ném" theo dõi nó trên hướng dẫn throw
.
Vì vậy, giải pháp nếu ngoại lệ ban đầu là một trong những bạn muốn xem nhiều hơn 7 hoặc nhiều dòng? – George
Tôi viết lại lời giải thích và thêm một ví dụ. – fadden
Vâng, tôi đã không làm việc với Java "thực" trong một thời gian, nhưng tôi nên đã làm việc này bằng cách googling cho "Java stacktrace 12 nhiều hơn" hoặc một cái gì đó như thế. Như bạn chỉ ra, các đường được redacted ("12 more") là các dòng trùng lặp từ stacktrace ở trên. Tôi đã được ấn tượng rằng LogCat đã cắt tỉa các đường "hữu ích" của stacktrace, nhưng đó không phải là trường hợp. Cảm ơn bạn đã sửa chữa sự hiểu lầm của tôi. – George
Nếu mã của bạn gọi phương thức tạo ra quá cao ngăn xếp, bạn có thể (và nên) xử lý ngoại lệ trong mã và đầu ra của bạn bất kỳ điều gì có liên quan đến nhật ký.
Nếu bạn không có xử lý ngoại lệ nào và thậm chí bạn không biết mã nào trong mã của bạn nên bạn đang đặt trình xử lý như vậy thì vấn đề là hoàn toàn ở nơi khác - bạn nên xử lý ngoại lệ tốt hơn một chút.
bạn có thể quá tải tất cả các phương thức đăng nhập (log.d, log.i, log.e, v.v.) với thông số (String tag, String msg, Throwable tr)
, trong đó tham số thứ ba là ngoại lệ. Điều này sẽ cung cấp cho bạn toàn bộ stacktrace trong logcat
http://developer.android.com/reference/android/util/Log.html
- 1. Dấu vết ngăn xếp ngoại lệ Javascript
- 2. Tìm dấu vết ngăn xếp trong Eclipse với Android
- 3. Dấu vết ngăn xếp C++ di động khi ngoại lệ
- 4. Ngoại lệ không có dấu vết ngăn xếp trong Java
- 5. JUnit Eclipse - Hiển thị dấu vết ngăn xếp thành công
- 6. Cách tìm dấu vết ngăn xếp này?
- 7. Tại sao logcat android không hiển thị dấu vết ngăn xếp cho một ngoại lệ thời gian chạy?
- 8. Dấu vết ngăn xếp sạch trong Groovy bằng Eclipse?
- 9. "Ngoại lệ khi tải ứng dụng" mà không có dấu vết ngăn xếp
- 10. Nhận dấu vết ngăn xếp hiện tại trong Ruby mà không cần nêu một ngoại lệ
- 11. in dấu vết ngăn xếp python mà không có ngoại lệ được nâng lên
- 12. Làm cách nào để tôi có một ngoại lệ và giữ lại dấu vết ngăn xếp?
- 13. Làm thế nào để hiển thị dấu vết ngăn xếp trên một ngoại lệ bị bắt?
- 14. Viết dấu vết ngăn xếp khi một ngoại lệ được ném từ một chủ đề khác
- 15. không theo dõi ngoại lệ dấu vết ngăn xếp trong EUnit
- 16. Làm thế nào để định dạng dấu vết ngăn xếp của ngoại lệ trong C#?
- 17. Ném ngoại lệ nhưng dấu vết ngăn xếp vẫn tồn tại
- 18. Trang Lỗi - cách in dấu vết ngăn xếp trong JSP
- 19. Bắt dấu vết ngăn xếp trong Perl?
- 20. TaskCanceledException trong AggregateException không chứa dấu vết ngăn xếp
- 21. Tìm dấu vết ngăn xếp thực tế Java từ theo dõi ngăn xếp JavaScript
- 22. Capybara: dấu vết ngoại lệ trong nhật ký
- 23. Tắt dấu vết ngăn xếp HTML bằng Xdebug
- 24. Wheres dấu vết ngăn xếp của tôi đã biến mất?
- 25. Tôi có thể lấy dấu vết ngăn xếp cho các ngoại lệ C++ không được xử lý (Mục tiêu) không?
- 26. Làm thế nào để vô hiệu hóa PHP cắt bỏ các phần của đối số dài trong dấu vết ngăn xếp ngoại lệ?
- 27. Có phải dấu vết ngăn xếp của hàm đã được giữ nguyên trên một ngoại lệ được ném không?
- 28. Làm cách nào để nhận được dấu vết ngăn xếp từ một đối tượng ngoại lệ bằng Python?
- 29. Làm thế nào tôi có thể viết một dấu vết ngăn xếp ngoại lệ trong erlang sau khi bắt nó?
- 30. Làm cách nào để ẩn phương pháp hiện tại khỏi dấu vết ngăn xếp ngoại lệ trong .NET?
Phiên bản SDK nào bạn đang sử dụng? Đó là một hành vi khá kỳ lạ ... bạn có thể vui lòng cung cấp một ví dụ về đầu ra cắt bỏ dấu vết ngăn xếp không? * Chỉnh sửa *: Tôi không thấy thẻ nhật thực, xin lỗi. Dù sao, nếu bạn sử dụng logcat gốc, tôi nghĩ bạn sẽ không gặp vấn đề gì: 'adb logcat' – Cristian
Nếu bạn đang đề cập đến phần" ... thêm 12 dòng ... ", bạn chỉ thấy rằng đối với trường hợp ngoại lệ là nguyên nhân của một ngoại lệ khác. Nếu phần trên cùng của dấu vết ngăn xếp giống với phần khác, toàn bộ khung hình chỉ được hiển thị cho một trong số chúng và một khung còn lại được xử lý "...". (Bạn thực sự cần phải thêm chi tiết hơn cho câu hỏi của bạn - chúng tôi chỉ đoán những gì bạn muốn.) – fadden
@Fadden: Bạn nói đúng - nó không cắt nó chút nào. Nếu bạn đăng nhận xét này làm câu trả lời, thì tôi sẽ chấp nhận nó. – Casebash