:.NET 4 (clr) ben hem .NET versiyonları yüklendikten bir dökümü var
0:000> lm m clr
start end module name
65490000 65aff000 clr (deferred)
0:000> lm m mscorwks
start end module name
6a980000 6af2c000 mscorwks (deferred)
Şimdi SOS sürümü belirsiz olduğum kullanmak. Her ikisi de sorunsuz bir şekilde yüklenir.
0:000> .loadby sos mscorwks
0:000> .loadby sos clr
Analize yaptığım en uygun sürümü nasıl bulabilirim? Yoksa her ikisine de ihtiyacım olacak mı?
.cordll -ve -u -l bu durumda güvenilir mi?
.symfix c:\symbols
.cordll -ve -u -l
CLRDLL: C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscordacwks.dll:4.0.30319.18047 f:8
doesn't match desired version 4.0.30319.296 f:8
CLRDLL: Loaded DLL c:\symbols\mscordacwks_x86_x86_4.0.30319.296.dll\50484AA966f000\mscordacwks_x86_x86_4.0.30319.296.dll
CLR DLL status: Loaded DLL c:\symbols\mscordacwks_x86_x86_4.0.30319.296.dll\50484AA966f000\mscordacwks_x86_x86_4.0.30319.296.dll
İleti 0 mscorwks gösteriliyor. Komutları kullandı: prensipte
~0s
k
=== GÜNCELLEME ===
.cordll
tamam. Varsayılan olarak .NET 4 çerçevesini kullanacaktır. Bu davranış .cordll -I
ile değiştirilebilir.
ben WinDbg 6.2 ila 6.3, en son sürümüne geçiş yapmış yolunun
.load C:\SOS\4.0.30319.296\SOS.dll
tarafından hedef bilgisayarın eşleşecek SOS her iki sürümünü elde edilmiş ve yüklediniz. Hala daha iyi değil.
Ayrıca, .cordll -I
'u öneren SOSEX'in yazarı Steve Johnson'a da sordum, fakat bu aynı zamanda, ne modül adı ne de temel adresle birlikte çöplüğümde de çalışmıyor. !threads
çalıştırmak için
.cordll -I clr
.cordll -I 65490000
herhangi bir girişim her zaman ThreadStore istenemedi
sonuçlanır.
!clrstack
çalıştırmak için
herhangi bir girişim hep idare yığını yürüyemez
sonuçlanır. Geçerli iş parçacığı muhtemelen yönetilen bir iş parçacığı değil. Süreçte yönetilen iş parçacıklarının bir listesini almak için iş parçacığı çalıştırabilirsiniz.
=== GÜNCELLEME ===
Mario Hewardt önerdiği gibi, tam SOS yolu belirterek karmaşık senaryo yalnızca sürecine bir SOS eklenti yüklemek (veya durumda birini boşaltma önlenebilir zaten yüklenmişler) veya beğendiğimiz varsayılan SOS sürümünü tanımlamak için .setdll
'u kullanabiliriz. Bununla birlikte, bu, analizi geliştirmemektedir.
=== GÜNCELLEME ===
Ben de WinDbg/SOS artık bir çatışma olmaz umuduyla.reload /u
.NET modüllerinden birini boşaltma denedi
ama hala şans.
Gerçekten çirkin. Sorun, eklenti mimarimiz nedeniyle gerçekleşir. Uygulamanın kendisi .NET2, yani başlangıçta .NET kullanılıyor. Eklentiler daha sonra .NET4'ü kullanır, böylece bu da yüklenir. –