Otomatik Olarak ASP.Net Uygulaması Hata Dökümünü Alma

   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ğer Açıklama
DumpFolder REG_EXPAND_SZ C:\HataDokumlari Hata 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.
DumpCount REG_DWORD 5 Maksimum alınacak olan hata döküm sayısı. Varsayılan olarak maksimum 10 döküm.
DumpType REG_DWORD 2 Hata 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.

Fatih Boy

Ankara'da yaşayan Fatih, bir kamu kurumunda danışman olarak çalışmaktadır. ALM süreçleri, kurumsal veri yolu sistemleri, kurumsal altyapı ve yazılım geliştirme konularında destek vermektedir. Boş zamanlarında açık kaynak kodlu projeler geliştirmeyi ve bilgisini yazdığı makalelerle paylaşmayı seven Fatih, aynı zamanda Visual C# ve Visual Studio teknolojileri konusundan Microsoft tarafından altı yıl üst üste MVP (En Değerli Profesyonel) ödülüne layık görülmüştür. İş hayatı boyunca masaüstü uygulamaları, web teknolojileri, akıllı istemciler gibi konularda Asp.Net, Php, C#, Java programlama dilleri ve MySql, MsSql ve Oracle gibi veritabanı yönetim yazılımları ile çalışmıştır. İngilizce ve Türkçe olarak yayınlanan makalelerini gerek İngilizce bloğunda, gerekse de Türkçe bloğunda bulabileceğiniz gibi web sitesinden de açık kaynak kodlu geliştirdiği yazılımlarına ulaşabilirsiniz. vCard - Twitter - Facebook - Google+

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir