2013-01-15 34 views
6

Geçerli stacktrace'i Thread.currentThread().getStackTrace() kullanarak geri alabilirim, ancak bu yalnızca bana çağrıda yer alan sınıfları verir. Çağrı izlemede yer alan nesne örneklerini geri almak mümkün mü? Belki de nesneleri yığından geri almamı sağlayan bir kütüphane olabilir mi?Java stacktrace ile ilgili nesneleri getir

Yığın izini istediğim nesneyi dolaylı olarak oluşturan bir Yay fasulyesine kadar izlememi gerektiren bir sorunum var.

GÜNCELLEME i zamanında benim için bunu yapabilirsiniz gömülebilir bir kütüphaneye Arıyorum Java bunun için hiçbir yerleşik bir araç varsa.

+0

Bu, JVM –

cevap

1

Bu çok ilginç bir fikir, ancak ne yazık ki no, yapamazsınız, bu imkansız.

UPD: cevaptır nedenlerinden biri "hayır" mümkün olabilir, eğer, o zaman tüm oluşturulan nesnelere başvurular bazı Liste bulunması gerekir ki bu gerçektir. Ancak bu durumda Java GC hiç çalışmayacaktı.

+2

kodunu kesmek gibi görünüyor. Bağımsız değişken tutmuyor: Java, bu tür kullanım durumları için "WeakReference" özelliğine sahiptir. –

+0

Bir çağrıda yer alan tüm nesne referanslarını saklamak yığın değil mi? Yani, alt fonksiyon çağrısı tamamlandığında JVM'nin arayan metodunu devam ettirmesi gerekiyor. Yığının bu kısmına erişmek imkansız mı? – NagyI

0

housemd deneyebilirsiniz. Bir mühendislik @ alibaba tarafından geliştirilir ve bir üretim ortamında bile kullanılması güvenlidir, ör. taobao.com.

Bu özelliği

şunlardır: enter image description here

+0

Soruma yeterince açık değildim gibi görünüyor. Çalışma zamanında benim için aynı şeyi yapabilecek bir gömülü kütüphane araştırıyorum. – NagyI

0

özel bir usulde kullanılan nesnelerin değerini görüntülemek için Eclipse hata ayıklayıcı deneyin:

Display object field value 
Output invocation stack trace 

takiben, örnek bir ekran görüntüsü. Kesme noktalarını, programı duraklatmak istediğiniz satırlara yerleştirin.

+0

İlk gönderiyi güncelledim. – NagyI