2012-08-03 19 views
8

Uzak sunucuda çalışan bir web sitem var ve gerçekleşen bir istisnadan bilgi almak istiyorum. VS'yi yükleyemiyorum veya uzaktan hata ayıklamayı kullanamıyorum ve WinDbg'nin çeşitli sürümlerini çok az bir başarı ile kullanmaya çalışıyorum. Yerel testlerimde, WinDbg'yi bir C++ istisnası ya da attığım bir CLR istisnasını kırmak için alabilirim, fakat 'bir şey atılmış' olduğundan daha fazla bilgi alamıyorum.VS hata ayıklayıcısını eklemeden CLR istisnasından bir stacktrace alabilir miyim?

WinDbg gitmek için bir yol mu, yoksa başka bir yolu var mı, yoksa yeterli günlüğe sahip olmadığım için mi vidalandım?

+0

Daha iyi günlüğe kaydetmeye ihtiyacınız olduğunu söyleyebilirim, evet – YePhIcK

+0

Ben [adplus] kurardım (http://blogs.msdn.com/b/ntdebugging/archive/2009/05/18/capturing-adplus-clr-crashes .aspx) geçici olarak bir istisna atıldığında minidump oluşturmak için WinDbg ile minidump'a bakın. – vcsjones

cevap

14

daha sonra bu komutları girin, süreç için WinDbg takın:

.symfix 
sxe clr 
sxd av 
.loadby sos clr 
g 

yürütme (sonra komutu gidin) devam edecek ve CLR istisnası atılır (veya başka bir işlenmeyen istisna) olduğu zaman kıracak. o CLR istisna üzerinde çıkar çıkmaz Gördüğünüz:

(xxxx.xxxx): CLR exception - code e0434352 (first chance) 

Sonra yığınında yönetilen nesneleri dökümü, yığın dökümü, !ClrStack istisna tipini yazdırmak için SOS !pe gibi komutları !dso kullanabilirsiniz vb

EDIT: sxe ve sxd komutlarında yazım hataları vardı. Bunu farketmek için @MStodd'a teşekkürler.

+0

'sxe' ve 'sxd' önündeki noktaların olmaması mı kastediyorsunuz? – MStodd

+0

@MStodd, iyi nokta! Fark ettiğin için teşekkürler. Yayını doğru komutlarla güncelledim. –

+1

Daha sonra dağınık makinemde deneyeceğim, ama iyi görünüyor. .NET 2.0 gibi görünüyor, '.loadby sos clr' yerine .loadby sos mscorwks 'gerekir. Bu doğru mu? – MStodd

İlgili konular