Tôi giả sử họ có nội bộ là IdentityHashMap<Object, Integer>
, gán một số nguyên duy nhất (nhưng vô nghĩa khác) cho mỗi đối tượng. Điều này nên được nội bộ để gỡ lỗi nhật thực (không phải là một id đặc biệt mà các đối tượng có), là bạn yêu cầu làm thế nào để có được điều đó?
Sửa: Tôi sẽ thiết lập một breakpoint như thế này (lưu ý tôi không thành thạo trong nhật thực):
- tôi sẽ có một breakpoint ban đầu (như một trong những bạn sử dụng để chụp ảnh chụp màn hình) và in các
System.identityHashCode(object)
của đối tượng mà tôi quan tâm.
- Sau đó, tôi sẽ tạo điểm ngắt bằng cách sử dụng điều kiện
System.identityHashCode(object) == <whatever number you saw at the previous step>
. Sẽ rất hiếm khi điều này dừng lại ở đối tượng sai.
Hoặc nếu đối tượng bạn quan tâm có đại diện thích hợp toString()
bạn có thể sử dụng, bạn cũng có thể thử thay vì System.identityHashCode(object)
. Trong mọi trường hợp, bạn không phải phụ thuộc vào id đối tượng nội bộ nhật thực, nhưng nắm bắt một "id" (hoặc gần như) mà bạn có thể lấy được từ chính đối tượng đó.
Nguồn
2010-07-20 11:49:21
Nói chung - tôi đang gỡ lỗi ứng dụng và muốn thu thập một số thông tin về các đối tượng một số lần trong quá trình chạy - để dừng tại điểm ngắt và nhận thông tin về đường dẫn của đối tượng thông qua các cuộc gọi ... – Gorbush
+1 Tôi nghĩ điều này là đúng, các con số dường như được cấp phát và theo dõi nội bộ bởi trình gỡ rối Eclipse, dễ đọc và nhận biết hơn so với các mã định danh đối tượng JVM thực tế. – skaffman
Tôi cũng nghĩ rằng chúng đến từ http://download.oracle.com/docs/cd/E17409_01/javase/6/docs/jdk/api/jpda/jdi/com/sun/jdi/ObjectReference.html#uniqueID%28 Thực hiện% 29 bởi trình gỡ lỗi Eclipse thực sự. – Redlab