Otomatik çalışan sistemleri uzaktan yönetiyorsanız hata oluşması durumunda hata dökümünü (error dump) almanın problemi tespit etmek adına ne kadar önemli olduğunu biliyorsunuzdur. Hata dökümü almada genelde yaşanılan sıkıntı hataların anlık oluşması nedeniyle hata dökümünün alınmasına fırsat olmamasıdır. Bu gibi durumlarda Windows Server 2008 SP1, Windows Vista SP1’den itibaren gelen Windows Error Reporting (WER) hayat kurtarıcı olabiliyor. Aşağıdaki paylaşacağım adımları takip ederek hata durumlarında otomatik hata dökümü alınmasını sağlayabilir ve daha sonra bu dökümlerden yola çıkarak hatanın kaynağını tespit edebilirsiniz.

   Öncelikle WER’e hatalarının tespit edilmesini istediğiniz process’i belirtmelisiniz. Bunu için kayıt kütüğünde öncelikle aşağıdaki girdiyi oluşturmalısınız;

HKLM\Software\Microsoft\Windows\Windows Error Reporting\LocalDumps\w3wp.exe

   ASP.Net uygulamaları w3wp.exe process’i altında çalıştığı için burada takip edilmesi için w3wp.exe process adını veriyoruz; fakat hatalara karşı takip edilmesini istediğiniz farklı bir uygulama olursa bu uygulamanın process adını burada kullanabilirsiniz.

   Bu kayıt kütüğü girdisi altına aşağıdaki 3 kritik anahtarı da eklemeniz gerekmek;

Anahtar adıVeri TürüDeğerAçıklama
DumpFolderREG_EXPAND_SZC:\HataDokumlariHata dökümlerinin saklanacağı klasör adı. Otomatik olarak oluşan hata dokümleri sistem tarafında bu klasörde saklanacaktır. Varsayılan olarak %LOCALAPPDATA%\CrashDumps klasörü kullanılmaktadır.
DumpCountREG_DWORD5Maksimum alınacak olan hata döküm sayısı. Varsayılan olarak maksimum 10 döküm.
DumpTypeREG_DWORD2Hata döküm türü;

  • 0: Özel Hata Dökümü
  • 1: Mini Hata Dökümü
  • 2: Tam Hata Dökümü

Varsayılan olarak mini hata dökümü alınır.
(.Net uygulamalarının hatalarının incelenmesinde genellikle tam hata dökümüne ihtiyaç duyulmaktadır)

   Bu noktada önemle düşmem gereken bir not var; hata dökümleri dökümü alınan uygulamanın o sırada hafızada kapladığı alanla doğru orantılı olarak yüksek miktarda disk alanını kaplayabilmektedirler. Bu sebeple alınacak hata döküm sayısı ve yerinin seçimi önemlidir.

   Diğer uygulama türlerinden farklı olarak .Net uygulamalarında bir hata oluşması durumunda JIT Debugger diyaloğu açılmaktadır. Bu durum da WER’in hatayı farketmesini ve hata dökümü almasını engelleyecektir. Bu durumdan kaçınmak için kayıt kütüğünde aşağıdaki düzenlemeyi yaparak hata durumunda JIT Debugger’ın devreye girmesini durdurmalısınız.

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug

   Yukarıdaki kayıt kütüğü düğümü altında yer alan Debugger anahtarının adını değiştirin (alternatif olarak bu anahtar silinebilir; fakat ileride ihtiyacınız olabileceğinden yapılmasını tavsiye etmem). Bu konuda daha detaylı bilgiyi http://technet.microsoft.com/en-us/library/cc939486.aspx adresinde bulabilirsiniz.

   Bu adımların takip edilmesi ve gerekli düzenlemelerin yapılması sonrasında IIS üzerinde hizmet veren ASP.Net uygulamanızda bir hata oluşması durumunda WER devreye girerek hata dökümünü alarak belirttiğiniz klasör altına koyacaktır.

   Bu konuda son bir önemli not; .Net uygulamaları içerisinde yakalanamayan hataların yönetilebilmesi için bazı yöntemler bulunmaktadır (Application.ThreadException olay bildirimi ya da ASP.Net error handler’ları gibi). Eğer uygulamanız içerisinde bu yöntemlerden biriyle hata yönetimi yapıyorsanız, oluşan hatalar uygulamanızca yakalancağı için (beklenmeyen ve uygulamanızın çalışmasını durdurmayan bir hata olduğu için) WER devreye girmeyecektir.

Şu Yazıları da Sevebilirsiniz

Leave a Comment

* Bu formu kullanarak, verilerinizin bu web sitesi tarafından saklanması ve kullanılmasını kabul ediyorsunuz.

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Bu web sitesi deneyiminizi geliştirmek için çerezleri kullanır. Bunu kabul ettiğinizi varsayacağız, ancak isterseniz vazgeçebilirsiniz. Kabul Et Daha Fazla Bilgi