WinDBG ve dump analizi - Bölüm 1: WinDBG kurulumu ve temel ayarlar


Geliştirmiş olduğumuz uygulamalarda karşılaştığımız sorunları gidermek için analiz yaparken kullandığımız pek çok faydalı araçtan bir tanesi, "dump analizi" yapmamıza yardımcı olan WinDBG aracıdır.

 

WinDBG ve dump analizi, oldukça detaylı ve derin olan bir konudur bu yüzden bu yazı serimde kısaca WinDBG'nin kurulumu, konfigürasyonu ve .NET ile geliştirilmiş uygulamalarda yaşanan sorunları gidermede nasıl kullanılacağı hakkında basit bilgiler vermeye çalışacağım.

 

Başlamadan önce

 

WinDBG ve dump analizi çalışmalarından önce ilk olarak aşina olmanız gereken bazı kavram ve konular bulunmaktadır. Kısaca özetlemek gerekirse:

 

·         Dump nedir? Bir uygulamanın dump’ı nasıl alınır? Ne zaman dump toplamak gerekir?

·         Crash ve hang kavramları nedir?

·         Exception nedir? First chance ve second chance exception ne demektir?

 

Bu konulara Türkçe blog yazarı bir arkadaşım (Cenk İşcan - http://blogs.msdn.com/cenkiscan) değinmiş olduğu için tekrarlamayı gereksiz buluyorum. Aşağıdaki sayfaları gözden geçirerek yukarıdaki konular hakkında fikir sahibi olabilirsiniz:

 

Exception: İstisnalar ve İstisnai Durumlar

http://blogs.msdn.com/cenkiscan/archive/2008/02/13/exception-stisnalar-ve-stisnai-durumlar.aspx

 

Debug Diagnostic Tool 1.1

http://blogs.msdn.com/cenkiscan/archive/2007/11/29/debug-diagnostic-tool-1-1.aspx

 

Debug Diagnostics Tool: Nasıl dump alacağım?

http://blogs.msdn.com/cenkiscan/archive/2008/05/29/debug-diagnostics-tool-nas-l-dump-alaca-m.aspx

 

WinDBG kurulumu

 

WinDBG, "Debugging Tools For Windows" paketi içinden çıkan bir uygulamadır ve ücretsiz olarak aşağıdaki linkten indirebilirsiniz:

 

http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

 

Bu linkten sisteminize uygun (32 bit ya da 64 bit) WinDBG'yi indirip kurulumunu yapabilirsiniz.

 

Kurulumu yaptıktan sonra ilk ayarlamanız gereken, WinDBG’nin sembol dosyalarını nereden indireceğini belirtmektir.

 

“Sembol dosyaları” nedir?

 

Çok çok kısaca sembol dosyaları, uygulamanızı debug ederken kullanılan “debug bilgilerinin” tutulduğu dosyalardır. WinDBG içinde bir uygulamayı debug ederken, kendi uygulamanızın sembol dosyaları dışında, uygulamanın çalışmış olduğu platforma ait bazı bilgilere de ihtiyaç duyulur. Çok kısaca bu bilgiler sembol dosyaları içinde yer almaktadır. Bu konuya bir dump dosyası örneğine bakarken, thread’ler içinde CallStack’leri incelerken tekrar değineceğiz.

 

İhtiyacınız olacak sembol dosyaları Microsoft tarafından ücretsiz olarak sunulmaktadır. WinDBG’de sembol dosyalarını tanımlarken aşağıdaki şekilde kullanmanız gerekmektedir:

 

srv*[lokal klasör]*[sembol sunucusu]

 

Bu tanımlamada lokal klasör, sembolleri tekrar tekrar indirmek durumunda kalmamanız için kendi makinenizde ya da network içinde bir yer olacaktır. Sembol sunucusu olarak da http://msdl.microsoft.com/download/symbols adresini kullanacaksınız. Dolayısıyla, sembol dosyalarını c:\semboller\ isimli bir klasör yarattığınızı ve buraya indireceğinizi varsayarsak, WinDBG içinde yapacağınız tanımlama şu şekilde olacaktır:

 

srv*c:\semboller\*http://msdl.microsoft.com/download/symbols

 

Bu tanımlamayı yapmak için WinDBG içinden File menüsünden Symbol File Path’i seçmeli ya da CTRL-s’e basmalısınız. Açılan pencerede srv*c:\semboller\*http://msdl.microsoft.com/download/symbols tanımını girdikten sonra, WinDBG içinde çalışırken semboller internet üzerinden c:\semboller klasörüne indirilecektir.

 

SOS.dll ve .NET uygulamaları

 

WinDBG, her türlü uygulamayı debug ederken kullanabileceğiniz bir yazılımdır ancak ben .NET uygulamalarını debug etmek üzerine bilgiler vermeye çalışacağım. WinDBG ile gelen pek çok komutun yanında, .NET uygulamalarını debug etmek için bazı yardımcı komutlara ihtiyacımız olacaktır. Bu komutlar, .NET Framework kurulumu ile birlikte gelen SOS.dll dosyası içinde yer almaktadır. Dolayısıyla, .NET uygulamalarını debug ederken ilgili framework klasöründen WinDBG kurulum klasörüne kopyalacağınız SOS.dll’ini kullanacağız.

 

Örneğin, bir .NET 2.0 uygulaması debug edeceksek, C:\Windows\Microsoft.NET\Framework\v2.0.50727 klasörü altında yer alan SOS.dll’i WinDBG kurulum klasörünün altına kopyalayabilirsiniz. Birden fazla .NET versiyonu ile çalışıyorsanız SOS.dll dosyaları aynı isimli olacağından, isterseniz WinDBG klasörü altında yeni alt klasörler yaratarak buralara kopyalayabilir ya da kopyaladığınız SOS.dll’in ismini değiştirebilirsiniz.

 

Özet

 

Bu yazımda sadece WinDBG’nin .NET uygulamalarını debug edebilmek için nasıl hazır hale getireleceğinden kısaca bahsetmek istedim. Bundan sonraki yazımda SOS.dll ile birlikte gelen bazı komutları inceleyeceğiz. Şimdilik şunları yapmanızı öneriyorum:

 

1)    Makalemin başındaki “Başlamadan önce” kısmında linklerini verdiğim Cenk’in makalelerini inceleyin.

2)    WinDBG’yi indirin, kurulumunu ve sembol tanımlamasını yapın.

3)    .NET Framework klasörünün içindeki SOS.dll’i WinDBG klasörüne kopyalayın ve WinDBG help dosyalarına biraz göz atın.

 

Bir sonraki yazımda görüşmek üzere.

 

Referanslar:

 

Debugging Tools for Windows - Overview

http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

 

Debugging Tools and Symbols: Getting Started

http://www.microsoft.com/whdc/DevTools/Debugging/debugstart.mspx


--
AMB

Comments (0)

Skip to main content