Bellek dökümlerini analiz etmek için WinDBG'yi yükleme ve yapılandırma. Windows Hata Ayıklama Araçları: Windows kullanımı için BSOD Hata Ayıklama araçlarını teşhis etme ve düzeltme

Kritik bir arıza meydana geldiğinde, Windows işletim sistemi çöker ve Mavi Ölüm Ekranı (BSOD) görüntüler. İçerik rasgele erişim belleği ve oluşan hataya ilişkin tüm bilgiler takas dosyasına yazılır. Bir dahaki sefer Windows'u önyükleme kaydedilen verilere dayalı olarak hata ayıklama bilgileri içeren bir kilitlenme dökümü oluşturulur. Sistem olay günlüğünde kritik bir hata girişi oluşturulur.

Dikkat! Windows önyüklemesinin ilk aşamasında disk alt sistemi arızalanırsa veya kritik bir hata oluşursa kilitlenme dökümü oluşturulmaz.

Windows Kilitlenme Dökümü Türleri

Mevcut işletim sistemi Windows 10'u örnek olarak kullanma ( Windows Server 2016), sistemin oluşturabileceği ana bellek dökümü türlerini göz önünde bulundurun:

  • Mini bellek dökümü(256 KB). Bu dosya türü minimum miktarda bilgi içerir. Yalnızca BSOD hata mesajını, sürücülerle ilgili bilgileri, çökme anında etkin olan işlemleri ve çökmeye hangi işlemin veya çekirdek iş parçacığının neden olduğunu içerir.
  • Çekirdek bellek dökümü. Boyut olarak genellikle küçüktür; fiziksel bellek boyutunun üçte biri kadardır. Çekirdek bellek dökümü, mini dökümden daha ayrıntılıdır. Sürücüler ve çekirdek modu programları hakkında bilgi içerir; Windows çekirdeğine ve donanım soyutlama katmanına (HAL) ayrılan belleği ve sürücülere ve diğer çekirdek modu programlarına ayrılan belleği içerir.
  • Bellek dökümünü tamamla. Boyut olarak en büyüğüdür ve bu dosyayı oluşturmak için sisteminizin RAM artı Windows'un gerektirdiği 1MB'a eşit bellek gerektirir.
  • Otomatik bellek dökümü. Bilgi açısından çekirdek bellek dökümüne karşılık gelir. Tek fark, döküm dosyasını oluşturmak için ne kadar alan kullandığıdır. Bu dosya türü Windows 7'de yoktu. Windows 8'de eklendi.
  • Aktif bellek dökümü. Bu tür, sistem arızasının nedenini belirleyemeyen unsurları ortadan kaldırır. Bu, Windows 10'a eklenmiştir ve özellikle sanal makine kullanıyorsanız veya sisteminiz bir Hyper-V ana bilgisayarıysa kullanışlıdır.

Windows'ta bellek dökümü nasıl etkinleştirilir?

Win+Pause'u kullanarak sistem ayarları penceresini açın, " Ekstra seçenekler sistemler"(Gelişmiş sistem Ayarları). İçinde " bunlara ek olarak" (Gelişmiş), bölüm "" (Başlatma ve Kurtarma) düğmesine tıklayın " Seçenekler"(Ayarlar). Açılan pencerede sistem arızalandığında gerçekleştirilecek eylemleri yapılandırın. " kontrol edin Olayları sistem günlüğüne kaydedin" (Sistem günlüğüne bir olay yaz), sistem çöktüğünde oluşturulması gereken döküm türünü seçin. Onay kutusundaysa " Mevcut döküm dosyasını değiştir"(Mevcut herhangi bir dosyanın üzerine yaz) kutuyu işaretleyin, her hata olduğunda dosyanın üzerine yazılacaktır. Bu kutunun işaretini kaldırmanız daha iyi olur, böylece analiz için daha fazla bilgiye sahip olursunuz. Ayrıca Otomatik olarak yeniden başlat seçeneğini de devre dışı bırakın.

Çoğu durumda, BSOD'un nedenini analiz etmek için küçük bir bellek dökümü yeterli olacaktır.

Artık bir BSOD oluştuğunda döküm dosyasını analiz edebilir ve hatanın nedenini bulabilirsiniz. Mini döküm, varsayılan olarak %systemroot%\minidump klasörüne kaydedilir. Döküm dosyasını analiz etmek için programı kullanmanızı öneririm WinDBG(Microsoft Çekirdek Hata Ayıklayıcısı).

WinDBG'nin Windows'a Kurulumu

Yarar WinDBG dahil " Windows 10 SDK'sı"(Windows 10 SDK'sı). .

Dosya denir Winsdksetup.exe, boyut 1,3 MB.

Kurulumu çalıştırın ve tam olarak ne yapmak istediğinizi seçin - paketi bu bilgisayara yükleyin veya diğer bilgisayarlara kurulum için indirin. Paketi yerel bilgisayara yükleyelim.

Paketin tamamını yükleyebilirsiniz ancak yalnızca hata ayıklama aracını yüklemek için Windows için Hata Ayıklama Araçları.

Kurulumdan sonra WinDBG kısayollarını başlat menüsünde bulabilirsiniz.

.dmp dosyalarının WinDBG ile ilişkisini kurma

Döküm dosyalarını açmak için basit bir tıklamayla, .dmp uzantısını WinDBG yardımcı programıyla eşleyin.

  1. Açık Komut satırı yönetici olarak ve 64 bit sistem için komutları çalıştırın: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    Windbg.exe –IA
    32 bit sistem için:
    C:\Program Dosyaları (x86)\Windows Kitleri\10\Hata Ayıklayıcılar\x86
    Windbg.exe –IA
  2. Sonuç olarak, dosya türleri: .DMP, .HDMP, .MDMP, .KDMP, .WEW WinDBG ile eşlenecektir.

WinDBG'de hata ayıklama sembolü sunucusu kurma

Hata ayıklama sembolleri (hata ayıklama sembolleri veya sembol dosyaları), bir programın yürütülebilir dosyayla birlikte derlenmesi sırasında oluşturulan veri bloklarıdır. Bu tür veri blokları, işlevler, kütüphaneler vb. olarak adlandırılan değişken adları hakkında bilgi içerir. Bu veriler programı çalıştırırken gerekli değildir, ancak hata ayıklama sırasında faydalıdır. Microsoft bileşenleri, Microsoft Sembol Sunucusu aracılığıyla dağıtılan sembollerle derlenir.

WinDBG'yi şu şekilde yapılandırın: Microsoft kullanımı Sembol Sunucusu:

  • WinDBG'yi açın;
  • Menüye git Dosya –> Sembol Dosya Yolu;
  • Microsoft web sitesinden hata ayıklama sembollerini indirmek için URL'yi ve önbelleği kaydetme klasörünü içeren bir satır yazın: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols Örnekte, önbellek indirildi E:\Sym_WinDBG klasörüne herhangi birini belirtebilirsiniz.
  • Menüdeki değişiklikleri kaydetmeyi unutmayın Dosya–>Çalışma Alanından Tasarruf Edin;

WinDBG, yerel klasördeki sembolleri arayacaktır ve içinde gerekli sembolleri bulamazsa, sembolleri belirtilen siteden otomatik olarak indirecektir. Kendi semboller klasörünüzü eklemek istiyorsanız bunu şu şekilde yapabilirsiniz:

SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols;c:\Symbols

İnternet bağlantınız yoksa öncelikle sembol paketini Windows Sembol Paketleri kaynağından indirin.

WinDBG'deki kilitlenme dökümünün analizi

WinDBG hata ayıklayıcısı döküm dosyasını açar ve hata ayıklama için gerekli simgeleri yerel bir klasörden veya İnternet'ten indirir. Bu işlem sırasında WinDBG'yi kullanamazsınız. Pencerenin alt kısmında (hata ayıklayıcı komut satırında) şu mesaj görünür: Hata ayıklayıcı bağlı değil.

Komutlar pencerenin alt kısmında bulunan komut satırına girilir.

Dikkat edilmesi gereken en önemli şey, her zaman onaltılık olarak gösterilen ve şu şekilde olan hata kodudur: 0xXXXXXXXX(seçeneklerden birinde belirtilir - DUR: , 07/02/2019 0008F, 0x8F). Örneğimizde hata kodu 0x139'dur.

Hata ayıklayıcı!analyze -v komutunu çalıştırmayı önerir; farenizi bağlantının üzerine getirip tıklamanız yeterlidir. Bu komut ne için?

  • Ön bellek dökümü analizini gerçekleştirir ve detaylı bilgi Analizi başlatmak için.
  • Bu komut, hatanın STOP kodunu ve sembolik adını gösterecektir.
  • Çökmeye neden olan komut çağrılarının yığınını gösterir.
  • Ayrıca IP adresi, proses ve kayıt hataları da burada görüntülenir.
  • Ekip, sorunu çözmek için hazır öneriler sunabilir.

!analyze –v (listeleme eksik) komutunu çalıştırdıktan sonra analiz yaparken dikkat etmeniz gereken ana noktalar.

1: kd> !analiz -v


* *
* Hata Kontrolü Analizi *
* *
*****************************************************************************
STOP hatasının sembolik adı (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Hatanın açıklaması (Bir çekirdek bileşeni, kritik bir veri yapısını bozdu. Bu bozulma, bir saldırganın bu makinenin kontrolünü ele geçirmesine olanak tanıyabilir):

Bir çekirdek bileşeni kritik bir veri yapısını bozdu. Bozulma, potansiyel olarak kötü niyetli bir kullanıcının bu makinenin kontrolünü ele geçirmesine olanak tanıyabilir.
Hata argümanları:

Argümanlar:
Arg1: 00000000000000003, A LIST_ENTRY bozulmuş (yani çift kaldırma).
Arg2: ffffd0003a20d5d0, Hata kontrolüne neden olan istisna için tuzak çerçevesinin adresi
Arg3: ffffd0003a20d528, Hata kontrolüne neden olan istisna için istisna kaydının adresi
Arg4: 00000000000000000, Ayrılmış
Hata Ayıklama Ayrıntıları:
------------------

Sayaç, sistemin benzer bir hatayla kaç kez kilitlendiğini gösterir:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

Kısaltılmış biçimde DUR hata kodu:

BUGCHECK_STR: 0x139

Arızanın meydana geldiği süreç (hatanın nedeni olması şart değildir; arıza anında bu süreç bellekte çalışıyordu):

PROSES_NAME: sqlservr.exe

Hata Kodu Açıklaması: Sistem, bu uygulamada bir saldırganın bu uygulamanın kontrolünü ele geçirmesine olanak verebilecek bir yığın arabellek taşması algıladı.

ERROR_CODE: (NTSTATUS) 0xc0000409 - Sistem, bu uygulamada yığın tabanlı arabelleğin taştığını algıladı. Bu taşma potansiyel olarak kötü niyetli bir kullanıcının bu uygulamanın kontrolünü ele geçirmesine olanak tanıyabilir.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - Sistem, bu uygulamada yığın tabanlı arabelleğin taştığını algıladı. Bu taşma potansiyel olarak kötü niyetli bir kullanıcının bu uygulamanın kontrolünü ele geçirmesine olanak tanıyabilir.

Yığındaki son çağrı:

LAST_CONTROL_TRANSFER: fffff8040117d6a9'dan fffff8040116b0a0'a

Arıza anında çağrı yığını:

STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`3a20d528: nt!KeBugCheckEx
ffffd000`3a20d2b0 fffff804`0117da50: fffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2: nt!KiBugCheckDispatch+0x69
ffffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt!KiFastFailDispatch+0xd 0
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9: nt!KiRaiseSecurityCheckFailure+0x3d0
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 fffffe000`fcacb000 ffffd000`3a20d951: nt! ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 fffffe001`0a34c600: nt!IopSynchronousServiceTail+0x379
ffffd000`3a20d990 fffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380: nt!NtWriteFile+0x694
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt!KiSystemServiceCopyEnd+0 x13
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: 0x00007ffb`475 307da

Hatanın oluştuğu kod bölümü:

FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov bayt ptr ,0
HATA_INSTR_KODU: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: Makine Sahibi

Çekirdek nesne tablosundaki modülün adı. Analiz cihazı tespit edebildiyse sorunlu sürücü, ad MODULE_NAME ve IMAGE_NAME alanlarında görüntülenir:

MODULE_NAME:nt
IMAGE_NAME: ntkrnlmp.exe

1: kd> lmvm nt
Tüm modül listesine göz atın
Yüklenen sembol resim dosyası: ntkrnlmp.exe
Eşlenen bellek görüntü dosyası: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
Görüntü yolu: ntkrnlmp.exe
Resim adı: ntkrnlmp.exe
Dahili Ad: ntkrnlmp.exe
OrijinalDosya adı: ntkrnlmp.exe
Ürün Sürümü: 6.3.9600.18946
Dosya Sürümü: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

Verilen örnekte analiz ntkrnlmp.exe çekirdek dosyasını işaret ediyordu. Bellek dökümü analizi bir sistem sürücüsüne (win32k.sys gibi) veya bir çekirdek dosyasına (örneğimizde ntkrnlmp.exe gibi) işaret ettiğinde, büyük olasılıkla bu dosya sorunun nedeni değildir. Çoğu zaman sorunun aygıt sürücüsünde olduğu ortaya çıkıyor, BIOS ayarları veya ekipman arızası.

BSOD'un üçüncü taraf bir sürücüden kaynaklandığını görürseniz adı MODULE_NAME ve IMAGE_NAME değerlerinde belirtilecektir.

Örneğin:

Görüntü yolu: \SystemRoot\system32\drivers\cmudaxp.sys
Resim adı: cmudaxp.sys

Sürücü dosyasının özelliklerini açın ve sürümünü kontrol edin. Çoğu durumda sürücülerle ilgili sorun, sürücülerin güncellenmesiyle çözülür.

22 Haziran 2010'da

Daha önce Windbg ayrı olarak indirilebiliyordu. Ancak en son sürümler için Microsoft, bunu Windows SDK'nın bir parçası olarak saklıyor. 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 SDK'nın tamamını indirmediğini, yalnızca bir yükleyici olduğunu unutmayın. Dosyayı çalıştırdıktan sonra, yapabilirsiniz Hangi araçların indirilmesini istediğinizi seçin. Yalnızca Windbg ile ilgileniyorsanız, diğer her şeyi hariç tutabilir ve yalnızca 'Ortak Yardımcı Programlar' altındaki 'Hata ayıklama araçları'nı seçebilirsiniz.

Yukarıdaki paket Windbg 6.12 sürümünü kuruyor. Windbg'yi hızlı bir şekilde kurmak istiyorsanız, şu adresten indirebileceğiniz eski sürümü (6.11) tercih edebilirsiniz:
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.

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

Alexander Antipov

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


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

Bu, WinDBG'ye adanmış bir serinin ilk makalesidir. Bu seride yer alan tüm makalelerin listesi:

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

Bu yazıda kurulum ve bir prosese ekleme konularına bakacağız, sonraki yazılarda ise kesme noktalarına, adım adım hata ayıklamaya ve bellek incelemesine bakacağız.

WinDBG'yi yükleme

Windows 7 ile karşılaştırıldığında, Windows 8'deki WinDBG yükleme işlemi küçük değişikliklere uğramıştır. Bu bölümde her ikisi için de bir hata ayıklayıcı yüklemeye bakacağız. işletim sistemleri.

WinDBG'yi Windows 8'e yükleme

Windows 8'de WinDBG, Windows Sürücü Kiti'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.

Yükleyici, WinDBG'yi yerel olarak mı kurmak istediğinizi yoksa geliştirme paketinin tamamını başka bir bilgisayar için mi indirmek istediğinizi soracaktır. İkincisi aslında eşdeğerdir çevrimdışı yükleyici Gelecekte paketi diğer sistemlere yüklemek istiyorsanız bu çok kullanışlıdır.

Şekil 1: Kurulum Türünün Seçilmesi

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

Yükleyici işini tamamladıktan sonra paketin indirildiği dizine gidin (varsayılan olarak c:\Users\Kullanıcı adı\Downloads\Windows Kits\8.1\StandaloneSDK'dir) ve kurulum prosedürünü uygulayın.

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

Windows 7 ve önceki sürümler için WinDBG, Windows SDK ve .Net Framework'te bulunan "Windows için Hata Ayıklama Araçları" paketinin bir parçasıdır. Yükleyiciyi indirmeniz ve ardından kurulum işlemi sırasında “Windows için Hata Ayıklama Araçları” seçeneğini seçmeniz gerekecektir.

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

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

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

Şekil 3: Çeşitli platformlar için WinDBG yükleyicilerinin bulunduğu klasör

WinDBG Arayüzü

Şekil 4: WinDBG görünümü

İlk kez gördüğünde dış görünüş WinDGB, hata ayıklayıcının korkutucu derecede basit olduğunu fark edeceksiniz. WinDBG işlevlerinin çoğu işlem hata ayıklaması sırasında öğrenilir. Arayüzü anlatmakla zaman harcamak yerine aşağıdaki 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. Birinci alan: Komut yürütme sonucunun görüntülendiği bir pencere. İkinci alan: komutların girilmesi için küçük bir metin alanı.

Şekil 5: WinDBG Komut Penceresi

Semboller

Çoğu durumda, WinDBG herhangi bir özel ayar gerektirmez ve kutudan çıktığı anda doğru şekilde çalışır. Ancak yapılandırılması gereken önemli bir şey karakterlerdir. Semboller, bir program derlendiğinde 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 sökme sırasında bir uygulamanın işlevselliğini incelemenize olanak tanır. Birçok Microsoft bileşeni, Microsoft Sembol Sunucusu aracılığıyla dağıtılan sembollerle derlenir. Yürütülebilir dosyaların geri kalanında her şey o kadar pembe değildir - çok nadiren hata ayıklama bilgilerini içeren dosyalar uygulamaya dahil edilir. Çoğu durumda şirketler bu tür bilgilere erişimi kısıtlar.

WinDBG'yi Microsoft Sembol Sunucusunu kullanacak şekilde yapılandırmak için Dosya:Symbol Dosya Yolu'na gidin ve yolu SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols olarak ayarlayın. Elbette yıldız işaretlerinin ayırıcı olarak kullanılması biraz garip. Microsoft Sembol Sunucusunu kurduktan sonra semboller C:\Symbols klasörüne indirilecektir.

Şekil 6: Microsoft Sembol Sunucusunun Kurulumu

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

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

Hata ayıklama sırasında sembol ekleme

Hata ayıklama sırasında sembolleri içe aktarmanız gerekiyorsa bunu .sympath kullanarak yapabilirsiniz (sürece bağlandığınızda bir 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
Mevcut modüllerin yeniden yüklenmesi
................................................................
...............................................

Yüklenen sembollerin kontrol edilmesi

Hangi modüllerin sembol yüklü olduğunu görmek için x*! komutunu kullanabilirsiniz. Her ne kadar WinDBG sembolleri yalnızca gerektiğinde yüklese de, x*! yüklenebilecek sembolleri gösterecektir. ld * komutunu kullanarak sembollerin yüklenmesini sağlayabilirsiniz (bu biraz zaman alabilir, Debug:Break kısmına giderek işlemi durdurabilirsiniz).

Artık her modülün sembollerini görebiliriz.

Şekil 8: Sembollerin listesi

Yerel bir süreçte hata ayıklama

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

  1. Halihazırda çalışan bir sürece bağlanın.
  2. İşlemi WinDBG aracılığıyla başlatın.

Her yöntemin kendine göre avantaj ve dezavantajları bulunmaktadır. Diyelim ki bir programı WinDBG aracılığıyla çalıştırıyorsanız, uygulamanın çökmesine neden olabilecek bazı özel hata ayıklama seçeneklerine (örneğin, yığın hata ayıklama) erişiminiz olur. Öte yandan, hata ayıklayıcıyı eklediğinizde çöken programlar da vardır. Bazı uygulamalar (özellikle kötü amaçlı yazılımlar), 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 bağlı kalmak mantıklıdır. Bazen başlatma sırasında bazı parametreleri ayarlayan bir Windows hizmetinde hata ayıklıyorsunuz; bu nedenle, hata ayıklama işlemini basitleştirmek için, hizmeti bir hata ayıklayıcı aracılığıyla çalıştırmak yerine çalışan bir işleme bağlamak daha iyidir. Bazı kişiler, bir işlemi hata ayıklayıcı aracılığıyla çalıştırmanın performans üzerinde ciddi bir etkisi olduğunu iddia ediyor. 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!

Süreci başlatmak

Yerel olarak çalışan ve ağ ile iletişim kurmayan bağımsız bir uygulamada hata ayıklama yapıyorsanız, uygulamayı 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 olan yöntemi seçin.

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

Şekil 9: Seçim çalıştırılabilir dosya hata ayıklama için

Proses bağlantısı

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

Zaten çalışan bir işleme eklemek için "Dosya:İşleme Ekle" seçeneğine gidin ve ardından işlemin PID'sini veya adını seçin. Sürece katılmak için uygun haklara sahip olmanız gerektiğini unutmayın.

Şekil 10: Bağlanacak sürecin seçilmesi

Bağlandıktan sonra uygulama çalışmasını duraklatırsa, uygun kutuyu işaretleyerek "Noninvaise" modunu kullanabilirsiniz.

Uzak bir işlemde hata ayıklama

Bazen uzaktaki bir sistemdeki bir işlemin hatalarını ayıklamanız gerekebilir. Bu sorunu yerel hata ayıklayıcıyı kullanmak yerine kullanarak çözmek çok daha uygun olacaktır. sanal makine veya RDP'dir. Ya da yalnızca sistem kilitliyken erişilebilen LoginUI.exe işleminde hata ayıklıyorsunuzdur. Bu gibi durumlarda WinDBG'nin yerel bir sürümünü kullanabilir ve işlemlere uzaktan bağlanabilirsiniz. Bu sorunları çözmenin en yaygın iki yolu vardır.

Mevcut hata ayıklama oturumları

Bir programda yerel olarak hata ayıklamaya zaten başladıysanız (WinDBG'ye bağlanarak veya bir işlemi çalıştırarak), belirli bir komut girebilirsiniz; WinDBG, uzaktan hata ayıklayıcının bağlanabileceği bir "dinleyici" başlatacaktı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: Listener oluşturma komutunu çalıştırdıktan sonra ortaya çıkabilecek uyarı mesajı

WinDBG daha sonra sunucunun çalıştığını bildirecektir:

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

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

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

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


Sunucu başlatıldı. İstemci bu komut satırlarından herhangi birine bağlanabilir
0: -uzak tcp:Port=5005,Sunucu=KULLANICI-PC
MACHINENAME\Kullanıcı (tcp 192.168.127.138:13334) 16 Aralık Pazartesi 09:03:03 2013'te bağlandı

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

MACHINENAME\Kullanıcı (tcp 192.168.127.138:13334) 16 Aralık Pazartesi 09:03:03 2013'te bağlandı

Uzak sunucu oluşturma

Ayrıca WinDBG ile ayrı bir sunucu 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 sunucunun başlatılması

Yine kabul etmeniz gereken bir güvenlik uyarısı alabilirsiniz:

Şekil 14: Başlatma sırasında görünebilecek güvenlik mesajı hata ayıklama sunucusu

Dosya: Remote Stub'a Bağlan bölümüne gidip metin alanına aşağıdaki satırı girerek 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ıza dair herhangi bir sinyal almayacaksınız, ancak "Dosya:İşleme Ekle" seçeneğine giderseniz, hata ayıklama sunucusu işlemlerinin bir listesini göreceksiniz (burada dbgsrv.exe çalışıyor). Artık sürece sanki yerel olarak yapıyormuşsunuz gibi bağlanabilirsiniz.

Yardım sistemi

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

Ayrıca 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:

rüzgarbg> .hh .reload

Veya Yardım:İçindekiler bölümüne gidin.

Modüller

Program çalışırken uygulamanın işlevselliğini sağlamak için çeşitli modüller içe aktarılır. Dolayısıyla uygulamanın hangi modülleri içe aktardığını bilirseniz nasıl çalıştığını daha iyi anlayabilirsiniz. Çoğu durumda, yürütülebilir dosyanın kendisinden ziyade, program tarafından yüklenen belirli modülde hata ayıklama yapacaksınız.

Sürece bağlandıktan sonra WinDBG, yüklenen modülleri otomatik olarak gösterecektir. Ö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:
ModLoad: 00a70000 00b30000 C:\Windows\system32\calc.exe
ModLoad: 77630000 7776c000 C:\Windows\SYSTEM32\ntdll.dll
ModLoad: 77550000 77624000 C:\Windows\system32\kernel32.dll
ModLoad: 75920000 7596a000 C:\Windows\system32\KERNELBASE.dll
ModLoad: 76410000 77059000 C:\Windows\system32\SHELL32.dll
ModLoad: 77240000 772ec000 C:\Windows\system32\msvcrt.dll
ModLoad: 76300000 76357000 C:\Windows\system32\SHLWAPI.dll
ModLoad: 75cd0000 75d1e000 C:\Windows\system32\GDI32.dll
ModLoad: 75fa0000 76069000 C:\Windows\system32\USER32.dll
ModLoad: 777b0000 777ba000 C:\Windows\system32\LPK.dll
ModLoad: 774b0000 7754d000 C:\Windows\system32\USP10.dll
ModLoad: 73110000 732a0000 C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_
6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
ModLoad: 75a80000 75bdc000 C:\Windows\system32\ole32.dll
ModLoad: 76360000 76401000 C:\Windows\system32\RPCRT4.dll
ModLoad: 777c0000 77860000 C:\Windows\system32\ADVAPI32.dll
ModLoad: 75be0000 75bf9000 C:\Windows\SYSTEM32\sechost.dll
ModLoad: 76270000 762ff000 C:\Windows\system32\OLEAUT32.dll
ModLoad: 74590000 745d0000 C:\Windows\system32\UxTheme.dll
ModLoad: 74710000 748ae000 C:\Windows\WinSxS\x86_microsoft.windows.common-
ModLoad: 703d0000 70402000 C:\Windows\system32\WINMM.dll
ModLoad: 74c80000 74c89000 C:\Windows\system32\VERSION.dll
ModLoad: 77770000 7778f000 C:\Windows\system32\IMM32.DLL
ModLoad: 75c00000 75ccc000 C:\Windows\system32\MSCTF.dll
ModLoad: 74130000 7422b000 C:\Windows\system32\WindowsCodecs.dll
ModLoad: 74260000 74273000 C:\Windows\system32\dwmapi.dll
ModLoad: 756d0000 756dc000 C:\Windows\system32\CRYPTBASE.dll
ModLoad: 75e60000 75ee3000 C:\Windows\system32\CLBCatQ.DLL
ModLoad: 6ef10000 6ef4c000 C:\Windows\system32\oleacc.dll

Daha sonra hata ayıklama sürecinde lmf komutunu kullanarak bu listeyi tekrar görüntüleyebilirsiniz:

0:005>lmf
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 WindowsCodec'ler 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-
kontroller_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 777ba000 LPK C:\Windows\system32\LPK.dll
777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

Belirli bir modülün yükleme adresini “lmf m” komutunu kullanarak da öğrenebilirsiniz:

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

Ayrıca!dh uzantısını kullanarak belirli bir modülün resim başlığı hakkında bilgi alabilirsiniz ( Ünlem işareti bir uzantıyı belirtir):

0:005> !dh çekirdek32

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

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

OPSİYONEL BAŞLIK DEĞERLERİ
10B büyüsü#
9.00 bağlayıcı sürümü
C4600 kod boyutu
Başlatılan verilerin C800 boyutu
0 başlatılmamış veri boyutu
510C5 giriş noktasının adresi
1000 temel kod
----- yeni -----
77550000 resim tabanı
1000 bölüm hizalaması
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 görüntü boyutu
800 boyutlu başlıklar
D5597 sağlama toplamı
00040000 yığın rezervinin boyutu
00001000 yığın taahhüdünün boyutu
00100000 yığın rezervinin boyutu
00001000 yığın boyutu taahhüdü
140 DLL özellikleri
Dinamik taban
NX uyumlu
Dışa Aktarma Rehberinin B4DA8 [ A915] adresi
İçe Aktarma Dizininin BF6C0 [ 1F4] adresi
Kaynak Dizininin C7000 [520] adresi
İstisna Dizininin 0 [ 0] adresi
0 [ 0] Güvenlik Dizini adresi
Baz Yer Değiştirme Dizininin C8000 [B098] adresi
Hata Ayıklama Dizininin C5460 [ 38] adresi
Açıklama Dizininin 0 [ 0] adresi
0 [ 0] Özel Rehberin adresi
0 [ 0] İş parçacığı depolama dizininin adresi
816B8 [ 40] Yapılandırma Dizinini Yükle adresi
Bağlı İçe Aktarma Dizininin 278 [408] adresi
İthalat Adres Tablosu Dizininin 1000 [DE8] adresi
Gecikmeli İçe Aktarma Dizininin 0 [ 0] adresi
COR20 Başlık Dizininin 0 [ 0] adresi
Ayrılmış Dizinin 0 [ 0] 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ı sayısı
60000020 bayrak
Kod
(hizalama belirtilmedi)
Okumayı Yürüt

Hata Ayıklama Dizinleri(2)
Tür Boyut Adres İşaretçisi
CV 25 c549c c4c9c Format: 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 yönelik C4E00 dosya işaretçisi
0 yer değiştirme tablosuna dosya işaretçisi
Satır numaralarını gösteren 0 dosya işaretçisi
0 yer değiştirme sayısı
0 satır numarası sayısı
C0000040 bayrakları
Başlatılmış Veriler
(hizalama belirtilmedi)
Okuma yazma

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

BÖLÜM BAŞLIĞI #4
.reloc adı
B098 sanal boyut
C8000 sanal adresi
B200 ham veri boyutu
Ham verilere yönelik C6200 dosya işaretçisi
0 yer değiştirme tablosuna dosya işaretçisi
Satır numaralarını gösteren 0 dosya işaretçisi
0 yer değiştirme sayısı
0 satır numarası sayısı
42000040 bayrak
Başlatılmış Veriler
Atılabilir
(hizalama belirtilmedi)
Sadece oku

Mesajlar ve İstisnalar

Bir işleme bağlandıktan sonra ilk önce modüllerin bir 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ı belirler (bu yalnızca uygulamayı durdurmak için kullanılan bir işarettir). Kesme noktası bilgileri ekranda görüntülenir:

(da8.b44): Talimatı kırma istisnası - kod 80000003 (ilk şans)

Bu özel mesaj bir istisnadır, yani ilk şans istisnasıdır. Temel olarak 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 durdurulması anlamına gelir. İkinci şans istisnası, istisna oluştuktan sonra bazı işlemlerin gerçekleştirileceği ve ardından programın çalışmayı durduracağı anlamına gelir.

Kayıtlar

Hata ayıklayıcı, mesajları ve istisnaları görüntüledikten sonra işlemci kayıtlarının durumunu görüntüler. Kayıtlar, işlemcinin içindeki küçük bilgi parçalarını saklayan veya bellekteki bir şeyin durumunu izleyen özel değişkenlerdir. İşlemci bu kayıtlardaki bilgileri çok hızlı bir şekilde işleyebilir. Bu, her seferinde RAM'den veri yolu üzerinden bilgi almaktan çok daha hızlıdır.

calc.exe'ye bağlandıktan sonra WinDBG, aşağıdaki kayıtlarla ilgili bilgileri otomatik olarak 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

Bu bilgiyi daha sonra r komutunu kullanarak 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 pe 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 çalıştırabiliriz:

0:005> r
eax=7ffd9000

Bilgiler aynı anda birden fazla kayıttan aşağıdaki şekilde elde edilebilir:

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

Talimat işaretçisi

Son komut çalıştırılacak talimatlarla ilgilidir. Burada, r komutunda olduğu gibi, EIP kaydının içerdiği bilgiler de ekranda 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 u eip L1 komutunun eşdeğeridir, ardından 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ın

Gelecek makalelerde WinDBG'nin sahada nasıl kullanılacağına bakacağız: kesme noktaları, adım adım hata ayıklama ve bellek taraması. Değiştirme! J.

Windows için Hata Ayıklama Araçları- Kod hata ayıklama araçlarının çalıştırılması Windows sistemleri. Bunlar, Microsoft'un kullanıcı modunda ve çekirdek modu kodunda hata ayıklamak için tasarlanmış, serbestçe dağıtılan bir dizi programdır: uygulamalar, sürücüler, hizmetler, çekirdek modülleri. Araç seti, konsol ve GUI modu hata ayıklayıcılarını, sembollerle çalışmaya yönelik yardımcı programları, dosyaları, işlemleri ve uzaktan hata ayıklamaya yönelik yardımcı programları içerir. Araç seti, çeşitli sistem bileşenlerindeki arızaların nedenlerini bulmak için kullanılabilecek yardımcı programları içerir. Windows için Hata Ayıklama Araçları belirli bir noktadan itibaren tek başına dağıtım biçiminde indirilemez ve Windows SDK'nın (Windows Yazılım Geliştirme Kiti) bir parçasıdır. Enstrümantal set Windows araçları SDK ise MSDN abonelik programının bir parçası olarak mevcuttur veya ayrı bir dağıtım olarak msdn.microsoft.com adresinden ücretsiz olarak indirilebilir. Geliştiricilere göre en yeni ve en şimdiki versiyonu Windows için Hata Ayıklama Araçları özellikle Windows SDK'da bulunur.

Windows için Hata Ayıklama Araçları oldukça sık güncellenir ve kamuya açık hale getirilir ve bu süreç hiçbir şekilde işletim sistemlerinin yayınlanmasına bağlı değildir. Bu nedenle yeni versiyonları periyodik olarak kontrol edin.

Şimdi özellikle Hata Ayıklama Araçlarının ne işe yaradığını görelim. Microsoft Windows:

  • Yerel uygulamalarda, hizmetlerde, sürücülerde ve çekirdekte hata ayıklama;
  • Ağ üzerinden uzak uygulamalarda, hizmetlerde, sürücülerde ve çekirdekte hata ayıklama;
  • Çalışan uygulamalarda gerçek zamanlı hata ayıklama;
  • Uygulamaların, çekirdeğin ve sistemin bellek dökümü dosyalarını bir bütün olarak analiz edin;
  • x86/x64/Itanium mimarilerini temel alan sistemlerle çalışın;
  • Kullanıcı modu ve çekirdek modu programlarında hata ayıklama;

Windows için Hata Ayıklama Araçlarının aşağıdaki sürümleri mevcuttur: 32 bit x86, Intel Itanium, 64 bit x64. Bunlardan ikisine ihtiyacımız olacak: x86 veya x64.

Windows için Hata Ayıklama Araçlarını kurmanın birkaç yolu vardır; bu makalede yalnızca ana olanları ele alacağız:

  • Web yükleyicisi aracılığıyla kurulum.
  • Windows için Hata Ayıklama Araçlarını ISO'dan Yükleme Windows görüntüsü SDK'dır.
  • Windows için Hata Ayıklama Araçlarını doğrudan dbg_amd64.msi / dbg_x86.msi paketlerinden yükleme.

Hangi noktada bilgisayarıma neden hata ayıklama araçlarını yüklemem gerektiği hala belirsizliğini koruyor. Çoğunlukla çalışma ortamına müdahalenin son derece istenmeyen olduğu bir durumla karşı karşıya kalırsınız! Ve dahası, yeni bir ürün yüklemek, yani kayıt defteri/sistem dosyalarında değişiklik yapmak tamamen kabul edilemez olabilir. Örnekler arasında görev açısından kritik sunucular yer alır. Geliştiriciler neden uygulamaların kurulum gerektirmeyen taşınabilir sürümleri seçeneğini değerlendirmiyor?
Sürümden sürüme, Windows için Hata Ayıklama Araçları paketinin yükleme işlemi bazı değişikliklere uğrar. Şimdi doğrudan kurulum sürecine geçelim ve araç setini hangi yollarla kurabileceğinize bakalım.

Web yükleyicisini kullanarak Windows için Hata Ayıklama Araçlarını Yükleme

Windows SDK Arşivi sayfasına gidin ve Windows 10 adlı ve “Windows 10 SDK (10586) ve Windows 10 Mobile (Microsoft) (sürüm 10586.11) içeren aygıt öykünücüsü” öğesinin altındaki bölümü bulun.

Öğeye tıklayın SDK'YI YÜKLE. Tıkladıktan sonra, Windows SDK'nın çevrimiçi kurulum işlemini başlatan sdksetup.exe dosyasını indirin ve çalıştırın. İlk aşamada yükleyici, .NET Framework paketinin sistemde kurulu olup olmadığını kontrol edecektir. En son sürüm(V şu an bu 4,5). Paket eksikse kurulum sunulacak ve istasyon tamamlandıktan sonra yeniden başlatılacaktır. Yeniden başlatmanın hemen ardından, kullanıcı yetkilendirme aşamasında Windows SDK'nın kurulum işlemi başlar.

Çoğu zaman, bir paketin tüm bileşenlerini istisnasız seçerken, kurulum işlemi sırasında hatalar meydana gelebilir. Bu durumda, gerekli minimum set olan bileşenlerin seçici olarak kurulması önerilir.

Windows için Hata Ayıklama Araçları'nın kurulumu tamamlandıktan sonra, hata ayıklama dosyalarının konumu Bu method Kurulumumuz şu şekilde olacaktır:

  • 64 bit sürümler: C:\Program Dosyaları (x86)\Windows Kitleri\x.x\Debuggers\x64
  • 32 bit sürümler: C:\Program Dosyaları (x86)\Windows Kitleri\x.x\Debuggers\x86

* burada x.x, geliştirme kitinin belirli bir sürümüdür;
Sürüm 8 ve üzeri sürümlerde kurulum yollarının herkes için klasik olanlardan belirgin şekilde farklı olduğunu fark ettik. önceki sürümler Hata ayıklama araçları?

Çok büyük bir artı Bu method Windows için Hata Ayıklama Araçlarının Yüklenmesi, tüm mimariler için hata ayıklama araçlarının sürümlerinin aynı anda yüklenmesini içerir.

Windows SDK ISO'dan Windows için Hata Ayıklama Araçlarını Yükleme

Bu yöntem, tam Windows SDK (Yazılım Geliştirici Seti) kurulum görüntüsünü kullanarak Windows için Hata Ayıklama Araçlarının kurulmasını içerir. Belli bir zamana kadar indir ISO görüntüsü ilgili sistem için Windows SDK Arşivi sayfasında mümkündü. Ancak şu anda web yükleyicisi sdksetup.exe'yi çalıştırıp seçerek SDK'nın ISO görüntüsünü alabilirsiniz. Windows Yazılım Geliştirme Kitini İndirin yükleyici başlangıç ​​penceresinde:

Öğrendiğimiz gibi, bir web yükleyicisi kullanan önceki kurulum yöntemi oldukça kaprislidir ve çoğu zaman hatayla sonuçlanır. Temiz sistemlerde sorunsuz kurulur, ancak yeterli yüklü sistemlerde çok sayıda sorun ortaya çıkar. Durumunuz buysa, bu yöntemi kullanın.

Buna göre sayfada gerekli dağıtımı seçmeniz gerekiyor, benim için (ve çoğu kişi için sanırım) şu anda “Windows 7 ve .NET Framework 4 için Windows SDK” ve hemen altındaki “ISO Alın” bağlantısını tıklayın. DVD görüntüsü”.

Msdn.microsoft.com sitesiyle çalışırken bir tarayıcı kullanmanızı öneririm İnternet Explorer, rakip ürünlerin çalışmadığı durumlar olduğu için!

Buna göre sadece ihtiyaca göre seçim yapmak gerekir. Genellikle Windows için Hata Ayıklama Araçlarının bitliği sistemin bitliğiyle eşleşir. Sistemlerim çoğunlukla 64 bit olduğundan çoğu durumda 64 bitlik bir sistem için görüntüyü GRMSDKX_EN_DVD.iso indiriyorum.
Daha sonra imajı indirdikten sonra bir şekilde mevcut ISO imajı ile çalışmamız gerekiyor. Geleneksel yöntem elbette CD yazmaktır ancak bu oldukça uzun ve bazen pahalı bir yöntemdir. Sistemde sanal disk aygıtları oluşturmak için ücretsiz yardımcı programları kullanmanızı öneririm. Şahsen ben bu amaçla DEAMON Tools Lite'ı kullanmayı tercih ediyorum. Birisinin dedikleri gibi zevke ve renge bağlı olarak başka tercihleri, daha doğrudan veya hafif yardımcı programları olabilir.. DAEMON Tools Lite'ı yükledikten sonra, GRMSDKX_EN_DVD.iso görüntü dosyasına çift tıklıyorum ve sistemde yeni bir sanal görüntü beliriyor CD:

Daha sonra çift tıklayarak otomatik yüklemeyi etkinleştiriyorum ve Windows SDK kurulumunu başlatıyorum:

Listeden kurulacak bileşenleri seçme zamanı geldiğinde, ekran görüntüsünde işaretlenenler dışındaki tüm seçenekleri kesinlikle devre dışı bırakıyoruz. Bu artık gereksiz hatalardan kaçınmamıza yardımcı olacaktır.


Her şey aynen böyle, ekran görüntüsünde işaretlenmiş iki seçenek var: “Windows Performans Araç Takımı” ve “Windows için Hata Ayıklama Araçları”. Her ikisini de seçin, çünkü Windows Performans Araç Seti işinizde kesinlikle işinize yarayacaktır! Daha sonra "İleri" butonuna tıkladıktan sonra kurulum her zamanki gibi devam eder. Ve sonunda “Kurulum Tamamlandı” yazısını göreceksiniz.
Kurulumun tamamlanmasının ardından Windows için Hata Ayıklama Araçları paketinin çalışma dizinleri aşağıdaki gibi olacaktır:

  • x86 sürümü için:
  • x64 sürümü için:

Bu noktada Windows için Debugging Tools kurulumu tamamlanmış sayılabilir.

.msi dosyası aracılığıyla Windows için Hata Ayıklama Araçlarını Yükleme

Önceki iki yöntemi kullanarak Windows için Hata Ayıklama Araçlarını yüklerken sorunlar ortaya çıkarsa, stoklarımızda hala bir tane daha var, en güvenilir ve zaman açısından test edilmiş, tabiri caizse birden fazla kez kurtarmaya gelen. Bir zamanlar, Windows SDK'ya entegrasyondan önce, Windows için Hata Ayıklama Araçları ayrı bir installer.msi olarak mevcuttu; bu hala bulunabiliyor, ancak zaten Windows SDK dağıtımının bağırsaklarında bulunuyor. Elimizde zaten Windows SDK'nın bir ISO görüntüsü olduğundan, onu sisteme monte edemiyoruz, ancak onu zaten iyi bilinen WinRAR arşivleyicisini veya ISO disklerinin içeriğiyle çalışan başka bir ürünü kullanarak açıyoruz.

İmajı açtıktan sonra kökte bulunan “Setup” dizinine gitmemiz ve ardından dizinlerden birini seçmemiz gerekiyor:

  • 64 bit sürümünü yüklemek için: \Setup\WinSDKDebuggingTools_amd64 ve dbg_amd64.msi dosyasını bu dizinden açın.
  • 32 bit sürümü yüklemek için: \Setup\WinSDKDebuggingTools ve dbg_x86.msi dosyasını bu dizinden açın.

Kurulumun tamamlanmasının ardından Windows için Hata Ayıklama Araçları paketinin çalışma dizinleri aşağıdaki gibi olacaktır:

  • x86 sürümü için: C:\Program Files (x86)\Windows için Hata Ayıklama Araçları (x86)
  • x64 sürümü için: Windows için C:\Program Files\Hata Ayıklama Araçları (x64)

Bu noktada Windows için Debugging Tools kurulumu tamamlanmış sayılabilir.

Ek Bilgiler

Bunun neyle bağlantılı olduğunu bilmiyorum, belki de dikkatsizliğimden dolayı, ancak Windows için Hata Ayıklama Araçları'nı yükledikten sonra yükleyici, sistem yolu değişkeni Path'deki hata ayıklayıcının bulunduğu dizinin yolunu ayarlamaz. Bu, çeşitli hata ayıklama görevlerinin doğrudan konsoldan başlatılmasına belirli kısıtlamalar getirir. Bu nedenle, yol yoksa bağımsız olarak pencereye yazarım Ortam Değişkenleri hata ayıklama araçlarına giden yol:

  • C:\Program Dosyaları (x86)\Windows Kitleri\10\Hata Ayıklayıcılar\x86
  • C:\Program Dosyaları (x86)\Windows Kitleri\10\Hata Ayıklayıcıları\x64

* Sizin durumunuzda, hem farklı bit boyutunda bir işletim sistemi kullanılmasından hem de farklı bir SDK sürümünün kullanılmasından dolayı yollar farklılık gösterebilir.

Windows için Hata Ayıklama Araçları paketinin yardımcı programları taşınabilir uygulamalar olarak çalışabilir; dizini çalışma sisteminden kopyalamanız yeterlidir Microsoft Windows Performans Araç Seti ve bunu bir üretim sunucusunda taşınabilir bir sürüm olarak kullanın. Ancak sistem kapasitesini dikkate almayı unutmayın! Kritik bir sistemde paketin kurulumunu tamamlamış olsanız bile kurulumdan hemen sonra çalışmaya başlayabilirsiniz, yeniden başlatmaya gerek yoktur.

Windows için Hata Ayıklama Araçlarının Bileşimi

Ve şimdi, son olarak Windows için Hata Ayıklama Araçlarının bileşimi:

Dosya Amaç
adplus.doc ADPlus yardımcı programına ilişkin belgeler.
adplus.exe Bir veya daha fazla işlem için dökümler ve günlük dosyaları oluşturmak amacıyla cdb hata ayıklayıcısının çalışmasını otomatikleştiren bir konsol uygulaması.
agestore.exe Bir sembol sunucusu veya kaynak sunucu tarafından kullanılan depolama alanından eski dosyaları kaldırmak için kullanılan bir yardımcı program.
breakin.exe CTRL+C tuşlarına basmaya benzer şekilde, işlemlere özel bir kesme birleşimi göndermenize olanak tanıyan bir yardımcı program.
cdb.exe Kullanıcı modu konsolu hata ayıklayıcısı.
Convertstore.exe Sembolleri 2 katmanlıdan 3 katmanlıya dönüştürmek için bir yardımcı program.
dbengprx.exe Uzaktan hata ayıklama için tekrarlayıcı (proxy sunucusu).
dbgrpc.exe RPC çağrı durumu bilgilerini görüntülemek için bir yardımcı program.
dbgsrv.exe Uzaktan hata ayıklama için kullanılan sunucu işlemi.
dbh.exe Bir sembol dosyasının içeriği hakkında bilgi görüntülemek için bir yardımcı program.
dumpchk.exe Döküm kontrol yardımcı programı. Bir döküm dosyasını hızlı bir şekilde kontrol etmek için bir yardımcı program.
dumpexam.exe Bellek dökümünü analiz etmek için bir yardımcı program. Sonuç %SystemRoot%\MEMORY.TXT dosyasına gönderilir.
gflags.exe Küresel sistem bayraklarının editörü. Yardımcı program, kayıt defteri anahtarlarını ve diğer ayarları yönetir.
i386kd.exe Kd için sarıcı. Bir zamanlar x86 makineleri için Windows NT/2000 tabanlı sistemlerde kd'ye verilen isim bu muydu? Muhtemelen uyumluluk nedenlerinden dolayı bırakılmıştır.
ia64kd.exe Kd için sarıcı. Bir zamanlar ia64 makineleri için Windows NT/2000 tabanlı sistemler için kd olarak mı adlandırılıyordu? Muhtemelen uyumluluk nedenlerinden dolayı bırakılmıştır.
kd.exe Çekirdek modu konsolu hata ayıklayıcısı.
kdbgctrl.exe Çekirdek hata ayıklama yönetim aracı. Çekirdek hata ayıklama bağlantısını yönetmek ve yapılandırmak için bir yardımcı program.
kdsrv.exe KD için bağlantı sunucusu. Yardımcı program, uzak bağlantıları çalıştıran ve bekleyen küçük bir uygulamadır. kd istemcide çalışır ve uzaktan hata ayıklama için bu sunucuya bağlanır. Hem sunucu hem de istemci aynı Hata Ayıklama Araçları derlemesinden olmalıdır.
kill.exe İşlemleri sonlandırmak için bir yardımcı program.
liste.exe Bir dosyanın içeriğini ekranda görüntülemek için kullanılan bir yardımcı program. Bu minyatür yardımcı program tek bir amaçla eklenmiştir; büyük metin veya günlük dosyalarını görüntülemek. Metni parçalar halinde yüklediğinden hafızada az yer kaplar.
logger.exe Yalnızca tek bir işlemle çalışabilen minyatür bir hata ayıklayıcı. Yardımcı program, incelenen programın tüm işlev çağrılarını ve diğer eylemlerini kaydeden logexts.dll dosyasını işlem alanına enjekte eder.
logviewer.exe Logger.exe hata ayıklayıcısı tarafından kaydedilen günlükleri görüntülemek için bir yardımcı program.
ntsd.exe Microsoft NT Sembolik Hata Ayıklayıcı (NTSD). Başlatıldığında bir metin penceresi oluşturması dışında cdb'ye benzeyen bir hata ayıklayıcı. Cdb gibi, ntsd de hem konsol uygulamalarında hem de grafik uygulamalarda hata ayıklama yeteneğine sahiptir.
pdbcopy.exe Bir sembol dosyasından özel sembolleri kaldırmak ve sembol dosyasında yer alan genel sembolleri kontrol etmek için kullanılan bir yardımcı program.
uzak.exe Herhangi bir konsol hata ayıklayıcı KD, CDB ve NTSD'nin uzaktan hata ayıklaması ve uzaktan kontrolü için bir yardımcı program. Tüm bu konsol hata ayıklayıcılarını uzaktan çalıştırmanıza olanak tanır.
rtlist.exe Uzak görev görüntüleyici. Yardımcı program, DbgSrv sunucu işlemi aracılığıyla çalışan işlemlerin bir listesini görüntülemek için kullanılır.
symchk.exe Microsoft sembol sunucusundan sembolleri indirmek ve yerel sembol önbelleği oluşturmak için bir yardımcı program.
symstore.exe Bir ağ veya yerel sembol depolama alanı (2 katmanlı/3 katmanlı) oluşturmaya yönelik bir yardımcı program. Sembol depolama, disk üzerinde belirli bir yapıya uygun olarak oluşturulmuş ve semboller içeren özel bir dizindir. Sembollerin kök dizininde, bileşenlerin adlarıyla aynı adlara sahip bir alt klasör yapısı oluşturulur. Buna karşılık, bu alt klasörlerin her biri, ikili dosyaların karma işlemiyle elde edilen özel adlara sahip iç içe geçmiş alt klasörler içerir. Symstore yardımcı programı bileşen klasörlerini tarar ve herhangi bir istemcinin bunları alabileceği sembol deposuna yeni bileşenler ekler. Symstore'un 0 katmanlı depolamadan sembolleri almak ve bunları 2 katmanlı/3 katmanlı depolamaya koymak için kullanıldığı söyleniyor.
tlist.exe Görev görüntüleyici. Çalışan tüm işlemlerin listesini görüntülemeye yönelik bir yardımcı program.
umdh.exe Kullanıcı modu dökümü yığın yardımcı programı. Seçilen sürecin yığınlarını analiz etmek için bir yardımcı program. Yığın için çeşitli parametreleri görüntülemenizi sağlar.
usbview.exe USB Görüntüleyici. Bir bilgisayara bağlı USB aygıtlarını görüntülemek için bir yardımcı program.
vmdemux.exe Sanal makine çoğullama çözücü. Bir COM bağlantısı için birkaç adlandırılmış kanal oluşturur. Kanallar çeşitli sanal makine bileşenlerinde hata ayıklamak için kullanılır
Windbg.exe GUI'li kullanıcı modu ve çekirdek modu hata ayıklayıcısı.

Nedenlerini belirlemek için mavi ekranlar(BSOD) bir bellek dökümü analizi gereklidir. Çoğu durumda, kritik hatalar durumunda sistem tarafından oluşturulan bir mini döküm yeterlidir.
Bu makale şunları içerir: adım adım talimat BSOD'un gerçek nedenini belirlemenizi sağlayan güçlü bir hata ayıklama aracı olan WinDBG'nin kurulumu ve yapılandırılması hakkında.

Adım 1 - Küçük Bellek Dökümlerini Yapılandırma

Adım 2 - WinDBG'nin Kurulumu

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

  • Windows 10 SDK (ağ yükleyici indirmesi)
  • Windows 8.1 SDK (ağ yükleyici indirmesi)

Adım 3 - .dmp Dosyalarını WinDBG ile Eşleme

Bellek dökümlerinin okunmasını ve analiz edilmesini kolaylaştırmak için .dmp dosyalarını WinDBG ile eşleyin. Bu, döküm dosyalarını Explorer'dan doğrudan WinDBG'de açmanıza gerek kalmadan açmanıza olanak tanır.


Adım 4 — Hata ayıklama sembol dosyalarını alacak bir sembol sunucusunun ayarlanması


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




Tepe