• Windows kullanımı için hata ayıklama araçları. Windows için Hata Ayıklama Araçları'nı yükleyin. WinDBG'yi Windows'a Kurmak

    Mavi ekranların (BSOD) nedenlerini belirlemek için bellek dökümünü analiz etmek gerekir. Çoğu durumda, kritik hatalar durumunda sistem tarafından oluşturulan bir mini döküm yeterlidir.
    Bu makale, bir BSOD'nin gerçek nedenini belirlemenizi sağlayan güçlü bir hata ayıklama aracı olan WinDBG'yi yüklemek ve yapılandırmak için adım adım yönergeler sağlar.

    Adım 1 — Küçük Bellek Dökümü Kaydı Ayarlama

    Adım 2 — WinDBG Kurulumu

    Bellek dökümlerini analiz etmek için, Windows SDK'da bulunan WinDBG hata ayıklayıcısını yüklemeniz gerekir. Bu makalenin yazıldığı sırada, Windows SDK'nın mevcut en son sürümleri şunlardır:

    • Windows 10 SDK (çevrimiçi yükleyiciyi indirin)
    • Windows 8.1 SDK (çevrimiçi yükleyiciyi indirin)

    Adım 3 — .dmp Dosyalarını WinDBG'ye Eşleme

    Bellek dökümlerini okumayı ve analiz etmeyi kolaylaştırmak için .dmp dosyalarınızı WinDBG ile eşleyin. Bu, ön başlatmayı atlayarak döküm dosyalarını doğrudan WinDBG'de Explorer'dan açmanıza izin verecektir.


    Adım 4 — Sembol Sunucusunu Hata Ayıklamalı Sembol Dosyalarını Alacak Şekilde Ayarlama


    WinDBG'nin kurulumu ve ilk yapılandırması şimdi tamamlandı. Görünümünü değiştirmek için menüye gidebilirsiniz. görüş- öğeyi seçerek bulacağınız yazı tipi ayarları Yazı tipi ve konsol penceresi ayarları Seçenekler.

    Mavi ekranların (BSOD) nedenlerini belirlemek için bellek dökümünü analiz etmek gerekir. Çoğu durumda, kritik hatalar durumunda sistem tarafından oluşturulan bir mini döküm yeterlidir.
    Bu makale, bir BSOD'nin gerçek nedenini belirlemenizi sağlayan güçlü bir hata ayıklama aracı olan WinDBG'yi yüklemek ve yapılandırmak için adım adım yönergeler sağlar.

    Adım 1 — Küçük Bellek Dökümü Kaydı Ayarlama

    Adım 2 — WinDBG Kurulumu

    Bellek dökümlerini analiz etmek için, Windows SDK'da bulunan WinDBG hata ayıklayıcısını yüklemeniz gerekir. Bu makalenin yazıldığı sırada, Windows SDK'nın mevcut en son sürümleri şunlardır:

    • Windows 10 SDK (çevrimiçi yükleyiciyi indirin)
    • Windows 8.1 SDK (çevrimiçi yükleyiciyi indirin)

    Adım 3 — .dmp Dosyalarını WinDBG'ye Eşleme

    Bellek dökümlerini okumayı ve analiz etmeyi kolaylaştırmak için .dmp dosyalarınızı WinDBG ile eşleyin. Bu, ön başlatmayı atlayarak döküm dosyalarını doğrudan WinDBG'de Explorer'dan açmanıza izin verecektir.


    Adım 4 — Sembol Sunucusunu Hata Ayıklamalı Sembol Dosyalarını Alacak Şekilde Ayarlama


    WinDBG'nin kurulumu ve ilk yapılandırması şimdi tamamlandı. Görünümünü değiştirmek için menüye gidebilirsiniz. görüş- öğeyi seçerek bulacağınız yazı tipi ayarları Yazı tipi ve konsol penceresi ayarları Seçenekler.

    Bu tür arızalar genellikle tam yerini belirlemesi zor olabilen arızalı bir sürücüyle ilişkilendirilir. Bununla birlikte, Windows Vista'daki (yalnızca Vista'da değil!) geliştirilmiş hata izleme sistemi sizi genellikle sorunlu bir dosyaya yönlendirebilir. Sonuç olarak, çoğu insan çılgınca kararsız bir bilgisayarda çalışmayı, belgeleri paranoyak bir düzenlilikle kaydetmeyi ve en iyisini ummayı bırakır.

    Windows çöktüğünde, genellikle sözde bir "bellek dökümü" oluşturulur. İkincisi, sizi sorunun kaynağına yönlendirebilecek ücretsiz Windows Hata Ayıklama Araçları ile araştırılabilir. Bu nedenle, yapmanız gereken tek şey:

    Kendinize bir hata ayıklama aracı indirin

    Windows Hata Ayıklama Araçlarını doğrudan Microsoft web sitesinden indirebilirsiniz. Program, Windows NT 4'ten başlayıp Windows 2008'e kadar birçok işletim sistemiyle çalışır, bu nedenle herhangi bir sorun yaşamazsınız. Evet, Windows 7 RC altında kararlı olduğu söylenemez ama testlerimize göre hala çalışıyor. Bu nedenle, Windows 7 RC altından bir sorunu teşhis etme girişimi bile başarılı olabilir.

    sisteminizi yapılandırın

    Çökmeler sırasında, bilgisayarınızın daha sonra hata ayıklayıcı için bir bilgi kaynağı olarak hizmet verecek olan bellek dökümleri oluşturması gerekir. Bu nedenle, Windows'un dökümler oluşturacak şekilde yapılandırılması önemlidir. İşletim sisteminizi yapılandırmak için Bilgisayarınıza (Bilgisayar) sağ tıklayın ve Özellikler'i (Özellikler) seçin. Ardından Gelişmiş Sistem Ayarları sekmesine tıklayın, Başlangıç ​​ve Kurtarma Ayarları alt bölümünü bulun ve Hata ayıklama bilgilerini yaz seçeneğinin Çekirdek bellek dökümü ) veya Tam bellek dökümü olarak ayarlandığından emin olun.

    Ardından, Başlat'a tıklayın, Programlar'a (Tüm Programlar) gidin, Hata Ayıklama Araçları'nı seçin ve WinDbg'yi çalıştırın. Programda File menüsüne gelin ve Symbol File Path... seçeneğini seçin. Ardından açılan pencereye aşağıdaki satırı yazın:

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

    İkincisi, hata ayıklama aracının çöken dosyanızı tanımlamasına yardımcı olabilecek "semboller" (semboller) adı verilen özel verilere giden yolu tanımlar.

    Diziyi girdikten sonra, Tamam düğmesini tıklayın. Daha sonra debugger ile çalışırken bu satır sembollerin msdl.microsoft.com adresinden indirilip c:\symbols klasörüne kaydedilmesine neden olacaktır.

    problemini çöz

    Şimdi başka bir mavi ekran hatası bekleyin ve ardından bilgisayarın yeniden başlatılması tamamlanır. Ardından WinDbg'yi yeniden çalıştırın (Vista kullanıcılarının programı yönetici olarak çalıştırması gerekir), Dosya menüsüne tıklayın, Crash Dump'ı Aç'ı seçin, \Windows\MEMORY.DMP dosyasını açın, program hemen onu analiz etmeye başlayacaktır.

    Ne yazık ki, WinDbg ne yaptığı hakkında çok az bilgi veriyor, bu yüzden programın takıldığını bile düşünebilirsiniz. Ancak bekleyin. Örneğin, çok güçlü olmayan bir bilgisayarda 4 GB belleği analiz etmenin biraz zaman alabileceğini anlayın, saatler sürebilir. Bu nedenle sabırlı olun, bunun yerine analizi bir gecede bırakın.

    Ancak, genellikle sonuç birkaç dakika içinde elde edilir. Bu, "Muhtemelen neden: UACReplace.sys" gibi bir şey söyleyen Hata Denetimi Analizi satırıyla kanıtlanır. Rusça'ya çevrildiğinde bu, sorunun muhtemelen UACReplace.sys dosyasından kaynaklandığı anlamına gelir. Arama çubuğuna, örneğin Google'a girin ve gerçek kökenini bulacaksınız. Özellikle, kurduğunuz programlardan birine veya kurulu bir sürücüye aitse, güncellemeyi deneyebilirsiniz. Belki de bu sorunlarınızı çözecektir.

    Zaman zaman WinDbg'nin dosyayı hiç adlandıramayacağını veya yalnızca Windows DLL'lerinden birini seçtiğini söylemeliyim. Bu başınıza geldiyse, durum çubuğunun üzerindeki komut penceresine tıklayın ve şu komutu yazın:

    Bundan sonra Enter'a basın. Bu size sorunlarınızın olası nedenleri hakkında bilgi içerebilecek daha ayrıntılı bir rapor verecektir.

    Bu sefer şanslı değilseniz, umutsuzluğa kapılmayın. Hata ayıklama, uzmanlar için bile oldukça zordur. Bu yüzden WinDbg'yi kapatın ve bir sonraki çökmeden sonra analizörü tekrar çalıştırın. Belki bu size biraz daha bilgi verecektir. İyi şanlar!

    WinDBG'ye Giriş - Bölüm 1

    Alexander Antipov

    WinDBG harika bir hata ayıklayıcıdır. Çok kullanıcı dostu bir arayüze sahip olmayabilir ve varsayılan olarak siyah arka planı olmayabilir, ancak şu anda Windows'taki en güçlü ve kararlı hata ayıklayıcılardan biridir. Bu makalede, kullanmaya başlayabilmeniz için size WinDBG'nin temellerini anlatacağım.


    WinDBG harika bir hata ayıklayıcıdır. Çok kullanıcı dostu bir arayüze sahip olmayabilir ve varsayılan olarak siyah arka planı olmayabilir, ancak şu anda Windows'taki en güçlü ve kararlı hata ayıklayıcılardan biridir. Bu makalede, kullanmaya başlayabilmeniz için size WinDBG'nin temellerini anlatacağım.

    Bu, WinDBG ile ilgili bir dizideki ilk makaledir. Bu dizide yer alan tüm makalelerin listesi:

    • Bölüm 1 - kurulum, arayüz, semboller, uzak/yerel hata ayıklama, yardım sistemi, modüller, kayıtlar.
    • Bölüm 2 - kesme noktaları.
    • Bölüm 3 - bellek incelemesi, program adım adım hata ayıklama, ipuçları ve püf noktaları.

    Bu makalede, bir sürece bağlama ve eklemeye bakacağız ve sonrakilerde kesme noktalarını, adım adım ilerlemeyi ve bellek incelemesini ele alacağız.

    WinDBG'yi Yükleme

    Windows 7 ile karşılaştırıldığında, Windows 8'de WinDBG yükleme işlemi biraz değişti. Bu bölümde, her iki işletim sistemi için hata ayıklayıcıyı yüklemeyi ele alacağız.

    WinDBG'yi Windows 8'e Kurma

    Windows 8'de WinDBG, Windows Sürücü Seti'ne (WDK) dahildir. Visual Studio ve WDK'yı yükleyebilir veya WinDBG'yi içeren Windows 8.1 için Hata Ayıklama Araçları paketini ayrı olarak yükleyebilirsiniz.

    Kurulum programı, WinDBG'yi yerel olarak kurmak mı yoksa başka bir makine için tüm geliştirme paketini indirmek mi istediğinizi soracaktır. İkincisi, temelde bağımsız bir yükleyiciye eşdeğerdir ve bu, gelecekte paketi başka sistemlere yüklemek istiyorsanız çok kullanışlıdır.

    Şekil 1: Kurulum tipini seçme

    Bir sonraki pencerede, "Windows için Hata Ayıklama Araçları" dışındaki tüm öğelerin işaretini kaldırmanız ve "İndir" düğmesini tıklamanız gerekir.

    Yükleyici işini tamamladıktan sonra paketin indirildiği dizine gidin (varsayılan olarak c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK şeklindedir) ve yükleme prosedürünü uygulayın.

    WinDBG'yi Windows 7 ve önceki sürümlere yükleme

    Windows 7 ve öncesi için WinDBG, Windows SDK ve .Net Framework ile birlikte gelen "Windows için Hata Ayıklama Araçları" paketinin bir parçasıdır. Yükleyiciyi indirmeniz ve ardından yükleme işlemi sırasında "Windows için Hata Ayıklama Araçları"nı seçmeniz istenecektir.

    Kurulum sırasında, sonraki kurulumları kolaylaştırmak için bağımsız bir yükleyici oluşturmak için "Yeniden Dağıtılabilir Paketler" altındaki "Hata Ayıklama Araçları" seçeneğini işaretliyorum.

    Şekil 2: Bağımsız bir yükleyici oluşturmak için yükleme seçeneklerini belirleme

    Kurulum tamamlandıktan sonra, çeşitli platformlar için WinDBG yükleyicilerine sahip olmalısınız (c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\ dizininde).

    Şekil 3: Çeşitli platformlar için WinDBG yükleyicilerini içeren klasör

    WinDBG Arayüzü

    Şekil 4: WinDBG'nin Görünümü

    WinDGB'nin görünüşünü ve verdiği hissi ilk kez gördüğünüzde, hata ayıklayıcının korkutucu derecede basit olduğunu anlayacaksınız. WinDBG işlevlerinin çoğu, işlem hata ayıklaması sırasında öğrenilir. Arayüzü açıklamakla zaman kaybetmek yerine, sonraki bölümlerde sadece en önemli noktaları ele alacağız.

    Hata ayıklayıcı arayüzü hakkında bilmeniz gereken en temel şey, iki alandan oluşan komut penceresidir. İlk alan: Yürütülen komutların sonucunun görüntülendiği bir pencere. İkinci alan: komutları girmek için küçük bir metin alanı.

    Şekil 5: WinDBG Komut Penceresi

    Semboller

    Çoğu durumda, WinDBG herhangi bir özel ayar gerektirmez ve kutudan çıkar çıkmaz doğru şekilde çalışır. Ancak düzeltilmesi gereken önemli bir şey sembollerdir. Semboller, program derlemesi sırasında yürütülebilir dosyayla birlikte oluşturulan ve hata ayıklama bilgilerini (işlevler ve değişken adları) içeren dosyalardır. Hata ayıklama bilgileri, hata ayıklama veya parçalarına ayırma sırasında bir uygulamanın işlevselliğini keşfetmenizi sağlar. Birçok Microsoft bileşeni, Microsoft Symbol Server aracılığıyla dağıtılan sembollerle derlenir. Yürütülebilir dosyaların geri kalanıyla, her şey o kadar pembe değil - çok nadiren uygulamayla birlikte hata ayıklama bilgileri içeren dosyalar paketlenir. Çoğu durumda, şirketler bu tür bilgilere erişimi kısıtlar.

    WinDBG'yi Microsoft Symbol Server kullanacak şekilde yapılandırmak için Dosya:Symbol Dosya Yolu bölümüne gidin ve yolu SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols olarak ayarlayın. Elbette, yıldızların sınırlayıcı olarak kullanılması biraz garip. Microsoft Symbol Server'ı kurduktan sonra, semboller C:\Symbols klasörüne indirilecektir.

    Şekil 6: Microsoft Symbol Server kurulumu

    WinDBG, gerektiğinde ikili dosyalar için sembolleri otomatik olarak yükleyecektir. Ayrıca kendi semboller klasörünüzü şu şekilde ekleyebilirsiniz:

    SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder

    Hata ayıklarken sembol ekleme

    Hata ayıklama sırasında sembolleri içe aktarmanız gerekirse, bunu .sympath ile yapabilirsiniz (sürece bağlandığınızda komut penceresi görünecektir). Örneğin, c:\SomeOtherSymbolFolder klasörünü eklemek için aşağıdaki komutu girin:

    0:025> .sympath+ c:\SomeOtherSymbolFolder
    Sembol arama yolu: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
    Genişletilmiş Sembol arama yolu: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

    Yolları ekledikten veya değiştirdikten sonra sembolleri yeniden yüklemek iyi bir fikirdir:

    0:025> .yeniden yükle
    Geçerli modülleri yeniden yükleme
    ................................................................
    ...............................................

    Yüklenen Sembolleri Kontrol Etme

    Hangi modüllerde sembollerin yüklü olduğunu görmek için x*! komutunu kullanabilirsiniz. WinDBG, sembolleri yalnızca gerektiğinde yüklese de, x*! yüklenebilecek sembolleri gösterecektir. ld * komutunu kullanarak sembolleri yüklenmeye zorlayabilirsiniz (bu biraz zaman alabilir ve Debug:Break'e giderek bu işlemi durdurabilirsiniz).

    Artık her modül için sembolleri görebiliriz.

    Şekil 8: Sembollerin listesi

    Yerel bir işlemde hata ayıklama

    Yerel bir işlemde hata ayıklarken iki seçeneğiniz vardır:

    1. Halihazırda çalışan bir işleme iliştirin.
    2. WinDBG aracılığıyla süreci başlatın.

    Her yöntemin kendine göre avantajları ve dezavantajları vardır. Diyelim ki, programı WinDBG aracılığıyla çalıştırıyorsanız, uygulamanın çökmesine neden olabilecek bazı özel hata ayıklama seçenekleriniz var (örneğin, yığın hata ayıklama). Öte yandan, bir hata ayıklayıcı eklediğinizde çöken programlar da vardır. Bazı uygulamalar (özellikle kötü amaçlı yazılım), başlatma sırasında sistemde bir hata ayıklayıcının varlığını kontrol eder ve buna göre, bu durumda zaten çalışan bir işleme sarılmak mantıklıdır. Bazen, başlatma sırasında bazı parametreleri ayarlayan bir Windows hizmetinde hata ayıklama vardır, bu nedenle hata ayıklama sürecini basitleştirmek için, hizmeti bir hata ayıklayıcı aracılığıyla başlatmak yerine çalışan bir işleme bağlanmak da daha iyidir. Bazı insanlar, bir işlemi hata ayıklayıcı aracılığıyla çalıştırmanın performans üzerinde ciddi bir etkisi olduğunu iddia eder. Kısacası ikisini de deneyin ve size en uygun olanı seçin. Herhangi bir nedenle belirli bir yöntemi tercih ederseniz, düşüncelerinizi yorumlarda paylaşın!

    Bir süreç başlatmak

    Yerel olarak çalışan ve ağa bağlı olmayan bağımsız bir uygulamada hata ayıklıyorsanız, onu WinDBG aracılığıyla çalıştırmak isteyebilirsiniz. Ancak bu, halihazırda çalışan bir işleme bağlanamayacağınız anlamına gelmez. Sizin için en uygun yolu seçin.

    Süreci başlatmak zor değil. "Dosya:Yürütülebilir Dosyayı Aç"a gidin ve hata ayıklamak istediğiniz yürütülebilir dosyayı seçin. Ayrıca bağımsız değişkenler sağlayabilir veya başlangıç ​​dizinini ayarlayabilirsiniz:

    Şekil 9: Hata ayıklama için bir yürütülebilir dosya seçme

    Proses bağlantısı

    Halihazırda çalışan bir sürece bağlanmak da zor değil. Ancak, bazı durumlarda hata ayıklamak istediğiniz işlemi tam olarak bulmanın zaman alabileceğini lütfen unutmayın. Örneğin, bazı tarayıcılar bir ana işlem ve ardından her sekme için birkaç işlem daha oluşturur. Bu nedenle, hata ayıkladığınız kilitlenme dökümüne bağlı olarak, ana işleme değil, sekmeyle ilişkili işleme bağlanmak isteyebilirsiniz.

    Halihazırda çalışan bir işleme eklemek için "Dosya:Bir İşleme Ekle"ye gidin ve ardından PID'yi veya işlem adını seçin. Sürece bağlanmak için uygun haklara sahip olmanız gerektiğini unutmayın.

    Şekil 10: Bağlanmak için bir işlem seçme

    Bağlandıktan sonra uygulama çalışmasını askıya aldıysa, uygun kutuyu işaretleyerek "Geçişsiz" modunu kullanabilirsiniz.

    Uzak bir işlemde hata ayıklama

    Bazen uzak bir sistemdeki bir işlemin hatalarını ayıklamanız gerekebilir. Bu görevi sanal makine veya RDP kullanmak yerine yerel bir hata ayıklayıcı ile halletmek çok daha uygun olacaktır. Veya yalnızca sistem kilitliyken kullanılabilen LoginUI.exe işleminde hata ayıklıyor olabilirsiniz. Bu gibi durumlarda, WinDBG'nin yerel sürümünü kullanabilir ve işlemlere uzaktan ekleyebilirsiniz. Bu sorunları çözmek için en yaygın iki yöntem vardır.

    Mevcut hata ayıklama oturumları

    Programda yerel olarak hata ayıklamaya zaten başladıysanız (WinDBG aracılığıyla bir işlem ekleyerek veya başlatarak), belirli bir komut girebilirsiniz ve WinDBG, uzaktan hata ayıklayıcının bağlanabileceği bir "dinleyici" (dinleyici) başlatır. Bunu yapmak için .server komutunu kullanın:

    Sunucu tcp:port=5005

    Yukarıdaki komutu çalıştırdıktan sonra şöyle bir uyarı görebilirsiniz:

    Şekil 11: "Dinleyici" oluşturma komutu çalıştırıldıktan sonra görünebilecek uyarı mesajı

    Ardından WinDBG, sunucunun çalıştığını bildirecektir:

    0:005> .server tcp:port=5005
    0: -uzak tcp:Port=5005,Sunucu=KULLANICI-PC

    Artık "Dosya:Uzak Oturuma Bağlan" seçeneğine gidip metin alanına şuna benzer bir şey girerek uzak bir ana bilgisayardan zaten var olan bir hata ayıklama oturumuna bağlanabilirsiniz: tcp:Port=5005,Server=192.168.127.138

    Şekil 12: Bir hata ayıklama oturumuna uzaktan bağlantı

    Bağlandıktan sonra, uzak istemcide onay alacaksınız:


    sunucu başladı İstemci bu komut satırlarından herhangi biriyle bağlantı kurabilir
    0: -uzak tcp:Port=5005,Sunucu=KULLANICI-PC
    MACHINENAME\User (tcp 192.168.127.138:13334) 16 Aralık Pazartesi 09:03:03 2013 tarihinde bağlandı

    ve hata ayıklayıcının yerel sürümündeki mesaj:

    MACHINENAME\User (tcp 192.168.127.138:13334) 16 Aralık Pazartesi 09:03:03 2013 tarihinde bağlandı

    Uzak sunucu oluştur

    Ayrıca ayrı bir WinDBG sunucusu oluşturabilir, ona uzaktan bağlanabilir ve hata ayıklamak için bir işlem seçebilirsiniz. Bu, işlemlerde hata ayıklamayı planladığınız dbgsrv.exe dosyası kullanılarak yapılabilir. Böyle bir sunucuyu başlatmak için aşağıdaki komutu çalıştırın:

    dbgsrv.exe -t tcp:port=5005

    Şekil 13: Uzak sunucu başlatma

    Ve yine, kabul etmeniz gereken bir güvenlik uyarısı alabilirsiniz:

    Şekil 14: Hata ayıklama sunucusu başlatılırken görünebilecek güvenlik mesajı

    "Dosya: Uzak Saplamaya Bağlan" dosyasına gidip metin alanına aşağıdaki satırı girerseniz hata ayıklama sunucusuna bağlanabilirsiniz: tcp:Bağlantı Noktası=5005,Sunucu=192.168.127.138

    Şekil 15: Hata ayıklama sunucusuna bağlanma

    Bağlandıktan sonra, bağlandığınız herhangi bir sinyal almazsınız, ancak "Dosya:Bir İşleme Ekle"ye giderseniz, hata ayıklama sunucusu işlemlerinin bir listesini görürsünüz (dbgsrv.exe'nin çalıştığı yer). Artık, sanki yerel olarak yapıyormuşsunuz gibi sürece bağlanabilirsiniz.

    Yardım sistemi

    WinDBG'deki yardım sistemi harika. Yeni bir şey öğrenmenin yanı sıra, bir komut hakkında yardım bilgisi alabilmeniz gerekir. WinDBG yardımına erişmek için .hh komutunu kullanın:

    Belirli bir komut için yardım bilgisi de alabilirsiniz. Örneğin, .reload komutuyla ilgili yardım almak için aşağıdaki komutu kullanın:

    Windbg> .hh .yeniden yükle

    Ya da sadece "Yardım:İçerikler" bölümüne gidin.

    Modüller

    Program çalışırken, uygulamanın işlevselliğini sağlayan çeşitli modüller içe aktarılır. Bu nedenle, bir uygulama tarafından hangi modüllerin içe aktarıldığını biliyorsanız, nasıl çalıştığını daha iyi anlayabilirsiniz. Çoğu durumda, yürütülebilir dosyanın kendisinde değil, program tarafından yüklenen belirli modülde hata ayıklıyor olacaksınız.

    Sürece bağlandıktan sonra WinDBG, yüklenen modülleri otomatik olarak görüntüler. Örneğin, calc.exe'ye bağlandıktan sonraki modüller aşağıdadır:

    Microsoft (R) Windows Hata Ayıklayıcı Sürüm 6.12.0002.633 X86
    Telif hakkı (c) Microsoft Corporation. Her hakkı saklıdır.

    *** bekleyen ek ile bekleyin
    Sembol arama yolu: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
    Yürütülebilir arama yolu:
    Mod Yükü: 00a70000 00b30000 C:\Windows\system32\calc.exe
    Mod Yükü: 77630000 7776c000 C:\Windows\SYSTEM32\ntdll.dll
    Mod Yükü: 77550000 77624000 C:\Windows\system32\kernel32.dll
    Mod Yükü: 75920000 7596a000 C:\Windows\system32\KERNELBASE.dll
    Mod Yükü: 76410000 77059000 C:\Windows\system32\SHELL32.dll
    Mod Yükü: 77240000 772ec000 C:\Windows\system32\msvcrt.dll
    Mod Yükü: 76300000 76357000 C:\Windows\system32\SHLWAPI.dll
    Mod Yükü: 75cd0000 75d1e000 C:\Windows\system32\GDI32.dll
    Mod Yükü: 75fa0000 76069000 C:\Windows\system32\USER32.dll
    Mod Yükü: 777b0000 777ba000 C:\Windows\system32\LPK.dll
    Mod Yükü: 774b0000 7754d000 C:\Windows\system32\USP10.dll
    Mod Yükü: 73110000 732a0000 C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_
    6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
    Mod Yükü: 75a80000 75bdc000 C:\Windows\system32\ole32.dll
    Mod Yükü: 76360000 76401000 C:\Windows\system32\RPCRT4.dll
    Mod Yükü: 777c0000 77860000 C:\Windows\system32\ADVAPI32.dll
    Mod Yükü: 75be0000 75bf9000 C:\Windows\SYSTEM32\sechost.dll
    Mod Yükü: 76270000 762ff000 C:\Windows\system32\OLEAUT32.dll
    Mod Yükü: 74590000 745d0000 C:\Windows\system32\UxTheme.dll
    Mod Yükü: 74710000 748ae000 C:\Windows\WinSxS\x86_microsoft.windows.common-
    Mod Yükü: 703d0000 70402000 C:\Windows\system32\WINMM.dll
    Mod Yükü: 74c80000 74c89000 C:\Windows\system32\VERSION.dll
    Mod Yükü: 77770000 7778f000 C:\Windows\system32\IMM32.DLL
    Mod Yükü: 75c00000 75ccc000 C:\Windows\system32\MSCTF.dll
    Mod Yükü: 74130000 7422b000 C:\Windows\system32\WindowsCodecs.dll
    Mod Yükü: 74260000 74273000 C:\Windows\system32\dwmapi.dll
    Mod Yükü: 756d0000 756dc000 C:\Windows\system32\CRYPTBASE.dll
    Mod Yükü: 75e60000 75ee3000 C:\Windows\system32\CLBCatQ.DLL
    Mod Yükü: 6ef10000 6ef4c000 C:\Windows\system32\oleacc.dll

    Daha sonra hata ayıklama işleminde, bu listeyi lmf komutuyla tekrar görüntüleyebilirsiniz:

    0:005>çok iyi
    başlangıç ​​bitiş modülü adı
    00a70000 00b30000 calc C:\Windows\system32\calc.exe
    6ef10000 6ef4c000 oleacc C:\Windows\system32\oleacc.dll
    703d0000 70402000 WINMM C:\Windows\system32\WINMM.dll
    73110000 732a0000 gdiplus C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_
    1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
    74130000 7422b000 WindowsCodecs C:\Windows\system32\WindowsCodecs.dll
    74260000 74273000 dwmapi C:\Windows\system32\dwmapi.dll
    74590000 745d0000 UxTheme C:\Windows\system32\UxTheme.dll
    74710000 748ae000 COMCTL32 C:\Windows\WinSxS\x86_microsoft.windows.common-
    controller_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\COMCTL32.dll
    74c80000 74c89000 SÜRÜM C:\Windows\system32\VERSION.dll
    756d0000 756dc000 CRYPTBASE C:\Windows\system32\CRYPTBASE.dll
    75920000 7596a000 KERNELBASE C:\Windows\system32\KERNELBASE.dll
    75a80000 75bdc000 ole32 C:\Windows\system32\ole32.dll
    75be0000 75bf9000 sechost C:\Windows\SYSTEM32\sechost.dll
    75c00000 75ccc000 MSCTF C:\Windows\system32\MSCTF.dll
    75cd0000 75d1e000 GDI32 C:\Windows\system32\GDI32.dll
    75e60000 75ee3000 CLBCatQ C:\Windows\system32\CLBCatQ.DLL
    75fa0000 76069000 USER32 C:\Windows\system32\USER32.dll
    76270000 762ff000 OLEAUT32 C:\Windows\system32\OLEAUT32.dll
    76300000 76357000 SHLWAPI C:\Windows\system32\SHLWAPI.dll
    76360000 76401000 RPCRT4 C:\Windows\system32\RPCRT4.dll
    76410000 77059000 SHELL32 C:\Windows\system32\SHELL32.dll
    77240000 772ec000 msvcrt C:\Windows\system32\msvcrt.dll
    774b0000 7754d000 USP10 C:\Windows\system32\USP10.dll
    77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll
    77630000 7776c000 ntdll C:\Windows\SYSTEM32\ntdll.dll
    77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
    777b0000 777ba000LPK C:\Windows\system32\LPK.dll
    777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

    Belirli bir modülün indirme adresini "lmf m" komutunu kullanarak da öğrenebilirsiniz:

    0:005> lmfm kernel32
    başlangıç ​​bitiş modülü adı
    77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll

    !dh uzantısını kullanarak belirli bir modülün görüntü başlığı hakkında da bilgi alabilirsiniz (ünlem işareti bir uzantıyı gösterir):

    0:005> !dh kernel32

    Dosya Türü: DLL
    DOSYA BAŞLIK DEĞERLERİ
    14C makinesi (i386)
    4 bölüm sayısı
    4A5BDAAD zaman tarih damgası Pzt 13 Temmuz 21:09:01 2009

    0 dosya işaretçisi sembol tablosuna
    0 sembol sayısı
    İsteğe bağlı başlığın E0 boyutu
    2102 özellikleri
    yürütülebilir
    32 bit kelime makinesi
    DLL

    İSTEĞE BAĞLI BAŞLIK DEĞERLERİ
    10B büyü #
    9.00 bağlayıcı sürümü
    C4600 boyut kodu
    Başlatılan verilerin C800 boyutu
    0 başlatılmamış veri boyutu
    510C5 giriş noktası adresi
    1000 temel kod
    ----- yeni -----
    77550000 resim tabanı
    1000 bölüm hizalama
    200 dosya hizalama
    3 alt sistem (Windows CUI)
    6.01 işletim sistemi sürümü
    6.01 görüntü sürümü
    6.01 alt sistem sürümü
    D4000 boyutlu görüntü
    800 boyutlu başlıklar
    D5597 sağlama toplamı
    00040000 yığın yedek boyutu
    00001000 yığın taahhüt boyutu
    00100000 yığın yedek boyutu
    00001000 yığın işleme boyutu
    140 DLL özelliği
    dinamik taban
    NX uyumlu
    Dışa Aktarma Dizininin B4DA8 [A915] adresi
    İçe Aktarma Dizininin BF6C0 [ 1F4] adresi
    Kaynak Dizininin C7000 [ 520] adresi
    0 [ 0] İstisna Dizininin adresi
    0 [ 0] Güvenlik Dizini adresi
    C8000 [B098] Üs Yeniden Yerleştirme Dizininin adresi
    Hata Ayıklama Dizininin C5460 [ 38] adresi
    0 [ 0] Açıklama Dizininin adresi
    0 [ 0] Özel Rehberin adresi
    0 [ 0] İş Parçacığı Depolama Dizininin adresi
    816B8 [ 40] Yük Yapılandırma Dizininin adresi
    278 [ 408] Bağlı İçe Aktarma Dizininin adresi
    Alma Adres Tablosu Dizininin 1000 [DE8] adresi
    0 [ 0] Gecikmeli İçe Aktarma Dizininin adresi
    0 [ 0] COR20 Başlık Dizininin adresi
    0 [ 0] Ayrılmış Dizinin adresi

    BÖLÜM BAŞLIĞI #1
    .metin adı
    C44C1 sanal boyutu
    1000 sanal adres
    C4600 ham veri boyutu
    Ham verilere 800 dosya işaretçisi

    0 yer değiştirme sayısı
    0 satır numarası
    60000020 bayrak
    kod
    (hizalama belirtilmedi)
    Yürüt Okuma

    Hata Ayıklama Dizinleri(2)
    Tip Boyut Adres İşaretçisi
    cv 25 c549c c4c9c Biçim: RSDS, guid, 2, kernel32.pdb
    (10) 4 c5498 c4c98

    BÖLÜM BAŞLIĞI #2
    .veri adı
    FEC sanal boyutu
    C6000 sanal adresi
    E00 ham veri boyutu
    Ham verilere C4E00 dosya işaretçisi
    Yer değiştirme tablosuna 0 dosya işaretçisi
    Satır numaralarına 0 dosya işaretçisi
    0 yer değiştirme sayısı
    0 satır numarası
    C0000040 bayrakları
    başlatılmış veri
    (hizalama belirtilmedi)
    Okuma yazma

    BÖLÜM BAŞLIĞI #3
    .rsrc adı
    520 sanal boyut
    C7000 sanal adresi
    600 boyutunda ham veri
    Ham verilere C5C00 dosya işaretçisi
    Yer değiştirme tablosuna 0 dosya işaretçisi
    Satır numaralarına 0 dosya işaretçisi
    0 yer değiştirme sayısı
    0 satır numarası
    40000040 bayrak
    başlatılmış veri
    (hizalama belirtilmedi)
    Sadece oku

    BÖLÜM BAŞLIĞI #4
    .relocname
    B098 sanal boyut
    C8000 sanal adresi
    B200 ham veri boyutu
    Ham verilere C6200 dosya işaretçisi
    Yer değiştirme tablosuna 0 dosya işaretçisi
    Satır numaralarına 0 dosya işaretçisi
    0 yer değiştirme sayısı
    0 satır numarası
    42000040 bayrak
    başlatılmış veri
    atılabilir
    (hizalama belirtilmedi)
    Sadece oku

    Mesajlar ve İstisnalar

    Bir işleme bağlandıktan sonra, önce bir modül listesi görüntülenir ve ardından diğer mesajlar görünebilir. Örneğin, calc.exe'ye bağlandığımızda, WinDBG otomatik olarak bir kesme noktası ayarlar (bu sadece uygulamayı durdurmak için kullanılan bir işarettir). Kesme noktası bilgisi ekranda görüntülenir:

    (da8.b44): Kesme talimatı istisnası - kod 80000003 (ilk şans)

    Bu özel mesaj bir istisnadır, yani ilk şans istisnasıdır. Esasen istisna, bir programın yürütülmesi sırasında ortaya çıkan özel bir durumdur. İlk şans istisnası, programın istisna oluştuktan hemen sonra durması anlamına gelir. İkinci şans istisnası, istisna oluştuktan sonra bazı işlemlerin gerçekleştirileceği ve ardından programın çalışmasını durduracağı anlamına gelir.

    Kayıtlar

    Mesajları ve istisnaları görüntüledikten sonra hata ayıklayıcı, işlemci kayıtlarının durumunu verir. Kayıtlar, işlemci içindeki küçük bilgi parçalarını depolayan veya bellekteki bir şeyin durumunu takip eden özel değişkenlerdir. İşlemci bu kayıtlardaki bilgileri çok hızlı bir şekilde işleyebilir. Bu, her seferinde RAM'den veri yolu hakkında bilgi almaktan çok daha hızlıdır.

    Calc.exe'ye bağlandıktan sonra, WinDBG otomatik olarak aşağıdaki kayıtlarla ilgili bilgileri görüntüler:

    eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
    cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246

    Daha sonra r komutunu kullanarak bu bilgiyi tekrar çoğaltabilirsiniz:

    0:005>r
    eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
    eip=77663540 esp=02affd9c ebp=02affdc8 iopl=0 nv up ei pl zr na pen nc
    cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
    ntdll!DbgBreakPoint:
    77663540 cc dahili 3

    Belirli bir kaydın değerini almak istiyorsak, aşağıdaki komutu uygulayabiliriz:

    0:005> gerçek
    eax=7ffd9000

    Bilgi, birkaç kayıttan aynı anda aşağıdaki gibi elde edilebilir:

    0:005> r eax,ebp
    eax=7ffd9000 ebp=02affdc8

    Yönerge işaretçisi

    Son komut, çalıştırma yönergeleriyle ilgilidir. Burada, r komutunda olduğu gibi, EIP kaydını neyin içerdiğine dair bilgiler de görüntülenir. EIP, işlemci tarafından yürütülecek bir sonraki talimatın konumunu içeren bir kayıttır. WinDBG'nin gösterdiği şey, u eip L1 komutunun karşılığıdır, bundan sonra WinDBG, EIP kaydında belirtilen adrese gider, bu bölümü montaj koduna dönüştürür ve ekranda görüntüler.

    ntdll!DbgBreakPoint:
    77663540 cc dahili 3

    irtibatta kal

    Aşağıdaki makalelerde, WinDBG'nin savaşta nasıl kullanılacağına bakacağız: kesme noktaları, adım adım hata ayıklama ve görüntüleme belleği. Değiştirme! J.

    22 Haziran 2010

    Önceden Windbg ayrı olarak indirilebiliyordu. Ancak en son sürümler için Microsoft, Windows SDK'nın bir parçası olarak tutar. Lütfen aşağıdaki indirme bağlantılarını bulun.

    Windows 10

    Windows 7 için Windbg'nin en son sürümü https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk bağlantısından indirilebilir.

    Windows 7

    Yukarıdaki bağlantılardan yükleyicileri indirin. Bunun tüm SDK'yı indirmediğini, yalnızca bir yükleyici olduğunu unutmayın. Dosyayı çalıştırdıktan sonra, hangi araçların indirilmesini istediğinizi seçebilirsiniz. Yalnızca Windbg ile ilgileniyorsanız, diğer her şeyi hariç tutabilir ve "Ortak Yardımcı Programlar" altında yalnızca "Hata ayıklama araçları"nı seçebilirsiniz.

    Yukarıdaki paket, windbg 6.12 sürümünü yükler. Windbg'yi hızlı bir şekilde kurmak istiyorsanız, adresinden indirilebilen eski sürüme (6.11) gidebilirsiniz.
    bu yazının sonunda verilen bağlantı.

    Kurulumu yaptıktan sonra, programı Başlat Menüsü -> Tüm Programlar -> Windows için Hata Ayıklama Araçları -> Windbg'de bulabilirsiniz.