Để gỡ lỗi tải lớp trong JVM, chúng tôi có thể sử dụng thông số -verbose:class
, nhưng ... Bất kỳ ai cũng biết cách gỡ lỗi tải tài nguyên (ví dụ: tệp thuộc tính)?Làm cách nào để gỡ lỗi tải tài nguyên JVM?
Trả lời
Tôi cho rằng bạn cần xem xét bằng cách sử dụng hồ sơ. Hoặc cái gì đó sử dụng giao diện thiết bị đo đạc.
Không chắc chắn nó ổn định như thế nào, nhưng có BTrace, là loại phiên bản Java của DTrace.
BTrace là một công cụ theo dõi động, an toàn cho nền tảng Java. BTrace có thể được sử dụng để tự động theo dõi một chương trình Java đang chạy. BTrace tự động hóa các lớp của ứng dụng đích để chèn mã truy tìm ("dò tìm bytecode"). Mã truy tìm được thể hiện bằng ngôn ngữ lập trình Java.
Nếu bạn đang làm điều này trên máy phát triển và số sự kiện (tài nguyên được tải) không quá thường xuyên, bạn cũng có thể chỉ đặt điểm ngắt trong trình gỡ lỗi.
Tài nguyên được cung cấp dưới dạng URL
s. Vì vậy, tôi đoán để làm điều đó trong "tinh khiết" Java: Cài đặt một tuỳ chỉnh ClassLoader
sao chép URL
s vào một phiên bản với một tùy chỉnh URLStreamHandler
. Đặt mã theo dõi của bạn trong trình xử lý luồng và chuyển tiếp tới mã gốc.
Trong môi trường Linux bạn có thể thử:
lsof -p <jvm pid>
Nó sẽ cung cấp cho bạn một danh sách với các mô tả được sử dụng bởi các chương trình liên quan đến việc pid quy định.
Vấn đề là nhiều tài nguyên có thể được tải từ một tệp jar duy nhất, chỉ có thể mở một lần. – erickson
Tôi đồng ý, trong trường hợp đó tôi nghĩ tùy chọn tốt nhất là đi với giải pháp ClassLoader –
Bạn có thể sử dụng InTrace để cụ các lớp Classloader mà làm bốc.
Đối với Sun JVM, tôi sẽ đề nghị sử dụng các mẫu sau Bao gồm theo dõi lớp học thích hợp:
- ClassLoader
- URLClassPath
- Loader
Có tồn tại một vài kỹ thuật để gỡ lỗi sự cố tải lớp học. Dưới đây là các trang trình bày tốt từ Những người sáng tạo JRebel tóm tắt những kỹ thuật sau: Do you really get class loaders?
- 1. Tài nguyên tốt để tìm hiểu cách gỡ lỗi php
- 2. Làm cách nào để gỡ lỗi trình tải khởi động?
- 3. Nguyên tắc gỡ lỗi là gì?
- 4. Làm cách nào để cập nhật Tài nguyên động trong một tài nguyên động?
- 5. Linux: Làm cách nào để gỡ lỗi SIGSEGV? Làm cách nào để theo dõi nguồn lỗi?
- 6. Làm cách nào để tạo tài nguyên PNG?
- 7. Làm cách nào để tải Bitmap từ tài nguyên mặc định của Android?
- 8. Làm cách nào để gỡ lỗi 503 lỗi trong Openshift?
- 9. Làm cách nào để gỡ lỗi lỗi phân đoạn Python?
- 10. Làm cách nào để có được BitmapImage từ Tài nguyên?
- 11. Làm cách nào để gỡ lỗi các Segfaults xảy ra trong JVM khi nó chạy mã của tôi?
- 12. Làm thế nào để tải các tài nguyên hoặc tài sản phục vụ GLWallpaper
- 13. Làm cách nào để bắt đầu gỡ lỗi?
- 14. Tải Tài nguyên bằng chuỗi
- 15. Làm thế nào để Gỡ lỗi ClojureScript
- 16. Require.js lỗi ngẫu nhiên Không thể tải tài nguyên
- 17. Gỡ lỗi an toàn cho các JVM sản xuất
- 18. Tải tài nguyên png vào trong CBitMap
- 19. Làm cách nào để tải tài nguyên png vào điều khiển hình ảnh trên hộp thoại?
- 20. Làm cách nào để tải các tài nguyên phụ với Jasper?
- 21. Làm cách nào để tải tệp từ thư mục tài nguyên?
- 22. Làm cách nào để tải hình ảnh tài nguyên png trong Silverlight?
- 23. Tải một XML từ Tài nguyên
- 24. Mẹo hoặc tài nguyên để tìm hiểu kỹ thuật gỡ lỗi nâng cao GDB trong xcode
- 25. Làm thế nào để gỡ lỗi/log/theo dõi một vấn đề tải applet?
- 26. Làm cách nào để gỡ lỗi JavaScript không đồng bộ? (Nhiều kịch bản đang tải)
- 27. Làm cách nào để nhúng tệp tài nguyên vào C?
- 28. Tôi làm cách nào để lồng định danh tài nguyên?
- 29. Làm cách nào để sao chép tệp từ Tài nguyên?
- 30. Làm cách nào để tham chiếu tài nguyên trong Java?
liên kết đã chết –
@FastSnail: có vẻ như họ đã chuyển sang Github. Đã cập nhật liên kết. – Thilo