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 ve varsayılan olarak siyah bir arka plana sahip 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 ve varsayılan olarak siyah bir arka plana sahip 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 seride 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 denetimi, 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 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ü Seti'ne (WDK) dahildir. yükleyebilirsiniz görsel stüdyo ve WDK veya Hata Ayıklama'yı yükleyin Araçlar WinDBG içeren Windows 8.1".

Yükleyici, WinDBG'yi yerel olarak kurmak mı yoksa başka bir bilgisayar için geliştirme paketinin tamamını indirmek mi istediğinizi soracaktır. İkincisi, esasen, paketi gelecekte başka sistemlere kurmak istiyorsanız çok kullanışlı olan bağımsız bir yükleyicinin eşdeğeridir.

Şekil 1: Kurulum türünü 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'dır) 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 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 seçiyorum.

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

Yükleme 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'nin Görünümü

İlk gördüğün anda dış görünüş WinDGB, 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ü anlatmakla zaman kaybetmek 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. İlk alan: komutların yürütülmesinin 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. Ama bir önemli şey yapılandırılması gereken karakterlerdir. Semboller, program derlemesi sırasında yürütülebilir dosyayla birlikte oluşturulan ve hata ayıklama bilgilerini (fonksiyonlar ve değişken adları) içeren dosyalardır. Hata ayıklama bilgileri, hata ayıklarken veya sökerken bir uygulamanın işlevselliğini keşfetmenize olanak tanır. 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 hata ayıklama bilgilerine sahip dosyalar uygulama ile birlikte gelir. Ç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. Tabii ki, 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ükler. Ayrıca aşağıdaki gibi 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 simgeleri içe aktarmanız gerekirse, bunu .sympath ile yapabilirsiniz (işlemi bağladığı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
Mevcut 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 yalnızca gerektiği gibi sembolleri yüklese de, x*! yüklenebilecek sembolleri gösterecektir. ld * komutunu kullanarak sembollerin yüklenmesini 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: Sembol 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 ekleyin.
  2. WinDBG aracılığıyla işlemi başlatın.

Her yöntemin kendine göre avantajları ve dezavantajları vardır. Diyelim ki programı WinDBG üzerinden çalıştırıyorsanız, uygulamanın çökmesine neden olabilecek bazı özel hata ayıklama seçenekleriniz (örneğin, yığın hata ayıklama) vardır. Öte yandan, onlara bir hata ayıklayıcı eklediğinizde kilitlenen 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 sürece sarılmak mantıklıdır. Bazen bir Windows hizmetinde, başlangıç ​​zamanında bazı parametreleri ayarlayan bir 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 sürece bağlanmak daha iyidir. Bazı insanlar, bir hata ayıklayıcı aracılığıyla bir işlem yürütmenin 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!

Bir süreci başlatmak

Yerel olarak çalışan ve ağa bağlı olmayan bağımsız bir uygulamada hata ayıklıyorsanız, bunu WinDBG üzerinden çalıştırmak isteyebilirsiniz. Ancak bu, halihazırda çalışan bir sürece 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ç" seçeneğine 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 yürütülebilir dosya seçme

Proses bağlantısı

Halihazırda çalışan bir sürece bağlanmak da zor değildir. 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 her sekme için bir üst işlem ve ardından birkaç işlem daha oluşturur. Bu nedenle, hata ayıkladığınız kilitlenme dökümüne bağlı olarak, ana sürece değil, sekmeyle ilişkili sürece 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 süreç seçme

Bağlandıktan sonra uygulama çalışmasını askıya aldıysa, uygun kutuyu işaretleyerek "Yokluk Yok" 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 bir 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ıyorsunuzdur. 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ı

Programı yerel olarak (WinDBG aracılığıyla bir işlem ekleyerek veya başlatarak) hata ayıklamaya zaten başladıysanız, belirli bir komut girebilirsiniz ve WinDBG, uzak 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:bağlantı noktası=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üntülenebilecek uyarı mesajı

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

0:005> .server tcp:port=5005
0: -uzak tcp:Bağlantı Noktası=5005,Sunucu=KULLANICI-PC

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

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

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


sunucu başladı. İstemci bu komut satırlarından herhangi birine bağlanabilir
0: -uzak tcp:Bağlantı Noktası=5005,Sunucu=KULLANICI-PC
MACHINENAME\Kullanıcı (tcp 192.168.127.138:13334) 16 Aralık Pzt 09:03:03 2013 tarihinde bağlandı

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

MACHINENAME\Kullanıcı (tcp 192.168.127.138:13334) 16 Aralık Pzt 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 sunucusunun başlatılması sırasında görüntülenebilecek güvenlik mesajı

"Dosya: Remote Stub'a 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ğladığınıza dair herhangi bir sinyal almayacaksınız, ancak "Dosya: Bir İşleme Ekle" seçeneğine giderseniz, hata ayıklama sunucusu işlemlerinin bir listesini göreceksiniz (dbgsrv.exe'nin çalıştığı yer). Artık 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, alabilmelisiniz. arkaplan bilgisi herhangi bir takım hakkında. WinDBG yardımına erişmek için .hh komutunu kullanın:

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

rüzgarbg> .hh .yeniden yükle

Veya "Yardım:İçindekiler" 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ülün hatalarını 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. Tüm hakları 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
ModYük: 75cd0000 75d1e000 C:\Windows\system32\GDI32.dll
ModYük: 75fa0000 76069000 C:\Windows\system32\USER32.dll
ModYük: 777b0000 777ba000 C:\Windows\system32\LPK.dll
ModYü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-
ModYü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
ModYük: 75c00000 75ccc000 C:\Windows\system32\MSCTF.dll
ModYü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:0005>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 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-
kontroller_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\COMCTL32.dll
74c80000 74c89000 VERSİYON 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 KULLANICI32 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

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

0:0005> lmf m 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 resim başlığı hakkında da bilgi alabilirsiniz (ünlem işareti bir uzantıyı belirtir):

0:005> !dh kernel32

Dosya tipi:DLL
DOSYA BAŞLIĞI DEĞERLERİ
14C makinesi (i386)
4 bölüm sayısı
4A5BDAAD zaman tarih damgası 13 Tem Pzt 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

OPSİYONEL BAŞLIK DEĞERLERİ
10B sihirli #
9.00 bağlayıcı sürümü
C4600 boyut kodu
Başlatılan verilerin C800 boyutu
0 boyutta başlatılmamış veri
510C5 giriş noktası adresi
1000 temel kod
----- yeni -----
77550000 görüntü tabanı
1000 bölüm hizalama
200 dosya hizalama
3 alt sistem (Windows CUI)
6.01 işletim sistemi sürümü
6.01 resim sürümü
6.01 alt sistem sürümü
D4000 boyutlu resim
800 boyutlu başlıklar
D5597 sağlama toplamı
00040000 yığın rezerv boyutu
00001000 yığın taahhüdü boyutu
00100000 yığın rezerv boyutu
00001000 yığın taahhüdü boyutu
140 DLL özellikleri
dinamik taban
NX uyumlu
İhracat Rehberinin B4DA8 [A915] adresi
İçe Aktarma Dizininin BF6C0 [ 1F4] adresi
Kaynak Dizininin C7000 [ 520] adresi
0 [ 0] İstisna Dizininin adresi
0 [ 0] Güvenlik Dizininin adresi
Temel Yer Değiştirme Dizininin C8000 [B098] adresi
Hata Ayıklama Dizininin C5460 [ 38] adresi
0 [ 0] Açıklama Dizininin adresi
0 [ 0] Özel Dizinin adresi
0 [ 0] Thread Storage Directory adresi
816B8 [ 40] Yükleme Yapılandırma Dizininin adresi
278 [ 408] Bağlı Alma Dizininin adresi
1000 [DE8] Adresi Alma Adres Tablosu Dizini
0 [ 0] Gecikmeli Alma Dizininin adresi
0 [ 0] COR20 Başlık Dizininin adresi
0 [ 0] Rezerve Dizin 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 belirtilmemiş)
Yürüt Oku

Hata Ayıklama Dizinleri(2)
Tür Boyut Adres İşaretçi
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
0 dosya işaretçisi yeniden yerleştirme tablosuna
0 dosya işaretçisi satır numaralarına
0 yer değiştirme sayısı
0 satır numarası
C0000040 bayrakları
başlatılmış veri
(hizalama belirtilmemiş)
Okuma yazma

BÖLÜM BAŞLIĞI #3
.rsrc adı
520 sanal boyut
C7000 sanal adresi
600 boyutlu ham veri
Ham verilere C5C00 dosya işaretçisi
0 dosya işaretçisi yeniden yerleştirme tablosuna
0 dosya işaretçisi satır numaralarına
0 yer değiştirme sayısı
0 satır numarası
40000040 bayrak
başlatılmış veri
(hizalama belirtilmemiş)
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
0 dosya işaretçisi yeniden yerleştirme tablosuna
0 dosya işaretçisi satır numaralarına
0 yer değiştirme sayısı
0 satır numarası
42000040 bayrak
başlatılmış veri
atılabilir
(hizalama belirtilmemiş)
Sadece oku

Mesajlar ve İstisnalar

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

(da8.b44): Talimat istisnasını kır - 80000003 kodu (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 durduğu anlamına gelir. İkinci şans istisnası, istisna gerçekleştikten 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ı saklayan 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 bilgileri tekrar çoğaltabilirsiniz:

0:0005>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 int 3

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

0:005> yeniden
eax=7ffd9000

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

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

Yönerge işaretçisi

Son komut, çalıştırma talimatlarıyla ilgilidir. Burada, r komutunda olduğu gibi, EIP kaydının ne olduğu hakkında bilgi de görüntülenir. EIP, konumu içeren bir kayıttır. sonraki talimat işlemci tarafından yürütülü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 int 3

iletişimde 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 bellek görüntüleme. Değiştirme! J.

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 şunları içerir: adım adım talimat WinDBG'yi kurmak ve yapılandırmak için - BSOD'nin gerçek nedenini belirlemenizi sağlayan güçlü bir hata ayıklama aracı.

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

Adım 2 — WinDBG'yi Yükleme

Bellek dökümlerini analiz etmek için Windows SDK'da bulunan WinDBG hata ayıklayıcısını yüklemeniz gerekir. Yazma sırasında, 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 ile Eşleştirme

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ıklama 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.

Kritik bir arıza anında, Windows işletim sistemi çalışmayı keser ve gösterir. Mavi ekranölüm (BSOD). İçerik rasgele erişim belleği ve oluşan hata ile ilgili tüm bilgiler disk belleği dosyasına yazılır. Sonrasında Windows önyüklemesi kaydedilen verilere dayalı olarak hata ayıklama bilgileriyle bir kilitlenme dökümü oluşturulur. Sistem olay günlüğünde önemli bir hata girişi oluşturulur.

Dikkat! Disk alt sistemi başarısız olursa veya bir kilitlenme dökümü oluşturulmaz. kritik hata Windows'u yüklemenin ilk aşamasında ortaya çıktı.

Windows Kilitlenme Dökümleri Türleri

Mevcut Windows 10 işletim sistemi örneğini kullanarak ( Windows Server 2016), sistemin oluşturabileceği ana bellek dökümü türlerini göz önünde bulundurun:

  • Mini bellek dökümü (Küçük 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 neden olan işlem veya çekirdek iş parçacığını içerir.
  • Çekirdek bellek dökümü. Tipik olarak küçük, fiziksel bellek miktarının üçte biri. Çekirdek bellek dökümü, mini dökümden daha ayrıntılıdır. Çekirdek modundaki sürücüler ve programlar hakkında bilgi içerir, ayrılan belleği içerir Windows çekirdeği ve donanım soyutlama katmanı (HAL) ile çekirdek modunda sürücülere ve diğer programlara ayrılan bellek.
  • Tam bellek dökümü. Boyut olarak en büyüğüdür ve sisteminizin RAM'ine ve bu dosyayı oluşturmak için Windows tarafından gereken 1MB'ye eşit bellek gerektirir.
  • Otomatik bellek dökümü. Bilgi açısından bir çekirdek bellek dökümüne karşılık gelir. Yalnızca döküm dosyasını oluşturmak için kullandığı alan bakımından farklılık gösterir. Bu dosya türü Windows 7'de yoktu. Windows 8'de eklendi.
  • Aktif bellek dökümü. Bu tür, bir sistem arızasının nedenini belirleyemeyen öğeleri filtreler. Bu, Windows 10'da eklenmiştir ve özellikle sanal bir makine çalıştırıyorsanız veya sisteminiz bir Hyper-V ana bilgisayarıysa kullanışlıdır.

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

Win + Pause'u kullanarak sistem ayarları penceresini açın, " Ek sistem ayarları" (Gelişmiş sistem Ayarları). sekmesinde " bunlara ek olarak" (Gelişmiş), bölüm "" (Başlangıç ​​ve Kurtarma), düğmesine tıklayın " Seçenekler» (Ayarlar). Açılan pencerede sistem arızası durumunda yapılacak işlemleri yapılandırın. onay kutusunu işaretleyin " Olayları şuraya yaz: sistem günlüğü » (Sistem günlüğüne bir olay yazın), sistem çöktüğünde oluşturulacak döküm türünü seçin. Onay kutusunda ise " Mevcut döküm dosyasını değiştirin» (Var olan herhangi bir dosyanın üzerine yaz) kutuyu işaretleyin, her kilitlenmede dosyanın üzerine yazılacaktır. Bu kutunun işaretini kaldırmak daha iyidir, o zaman analiz için daha fazla bilgiye sahip olursunuz. Ayrıca devre dışı bırak otomatik yeniden başlatma sistem (Otomatik olarak yeniden başlat).

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

Şimdi, bir BSOD meydana gelirse, döküm dosyasını analiz edebilir ve hataların nedenini bulabilirsiniz. Bir mini döküm, varsayılan olarak %systemroot%\minidump klasöründe depolanır. Döküm dosyasını analiz etmek için programı kullanmanızı tavsiye ederim. WinDBG(Microsoft Çekirdek Hata Ayıklayıcı).

WinDBG'yi Windows'a Yükleme

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

dosya denir winsdksetup.exe, boyut 1.3 MB.

Kurulumu çalıştırın ve paketi bu bilgisayara mı kuracağınızı yoksa diğer bilgisayarlara kurulum için mi indireceğinizi seçin. Paketi yerel bilgisayara yükleyin.

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ı.

Kurulduktan sonra, WinDBG kısayolları başlat menüsünde bulunabilir.

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

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

  1. Yönetici olarak bir komut istemi açın 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 Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. Sonuç olarak, dosya türleri: .DMP, .HDMP, .MDMP, .KDMP, .WEW WinDBG ile eşleştirilecektir.

WinDBG'de bir hata ayıklama sembolü sunucusu kurma

Hata ayıklama sembolleri (hata ayıklama sembolleri veya sembol dosyaları), yürütülebilir bir dosya ile birlikte bir programın derlenmesi sürecinde oluşturulan veri bloklarıdır. Bu tür veri blokları, işlevler, kitaplıklar 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ıklarken kullanışlıdır. Microsoft bileşenleri, Microsoft Symbol Server aracılığıyla dağıtılan sembollerle derlenir.

Microsoft Symbol Server'ı kullanmak için WinDBG'yi ayarlayın:

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

WinDBG, yerel klasördeki sembolleri arayacak ve içinde gerekli sembolleri bulamazsa, belirtilen siteden sembolleri 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ısı yoksa, önce Windows Sembol Paketleri kaynağından sembol paketini indirin.

WinDBG'de kilitlenme dökümü analizi

WinDBG hata ayıklayıcısı, döküm dosyasını açar ve yerel bir klasörden veya İnternet'ten hata ayıklamak için gerekli sembolleri indirir. Bu işlem sırasında WinDBG kullanamazsınız. Pencerenin altında (hata ayıklayıcı komut satırında) yazı 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 belirtilen hata kodudur. onaltılık değer ve benziyor 0xXXXXXXXXX(seçeneklerden birinde belirtilir - DUR:, 07/02/2019 0008F, 0x8F). Örneğimizde hata kodu 0x139'dur.

Hata ayıklayıcı sizden komutu yürütmenizi ister! analiz -v, fareyle bağlantının üzerine gelin ve tıklayın. Bu komut ne için?

  • Bellek dökümünün bir ön analizini gerçekleştirir ve detaylı bilgi Analizi başlatmak için.
  • Bu komut, STOP kodunu ve hatanın sembolik adını gösterecektir.
  • Kilitlenmeye neden olan komutların çağrı yığınını gösterir.
  • Ayrıca IP adresi, işlem ve kayıt hataları burada görüntülenir.
  • Ekip, sorunu çözmek için hazır önerilerde bulunabilir.

!analyze -v komutunu çalıştırdıktan sonra analiz yaparken dikkat etmeniz gereken başlıca noktalar (listeleme tamamlanmamıştır).

1: kd> !analiz -v


* *
*Bugcheck 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 sağlayabilir):

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 izin verebilir.
Hata argümanları:

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

Sayaç, sistemin benzer bir hatayla kaç kez çöktüğünü gösterir:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

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

BUGCHECK_STR: 0x139

Yürütme sırasında kilitlenen süreç (mutlaka hatanın nedeni değil, yalnızca bu süreç kilitlenme anında bellekte çalışıyordu):

PROSES_NAME: sqlservr.exe

Hata kodu şifre çözme: Sistem, bu uygulamada bir saldırganın bu uygulamanın kontrolünü ele geçirmesine izin verebilecek bir yığın arabellek taşması algıladı.

HATA_KODU: (NTSTATUS) 0xc0000409 - Sistem, bu uygulamada yığın tabanlı bir arabellek taşması algıladı. Bu taşma, potansiyel olarak kötü niyetli bir kullanıcının bu uygulamanın kontrolünü ele geçirmesine izin verebilir.
İSTİSNA_KODU: (NTSTATUS) 0xc0000409 - Sistem, bu uygulamada yığın tabanlı bir arabellek taşması algıladı. Bu taşma, potansiyel olarak kötü niyetli bir kullanıcının bu uygulamanın kontrolünü ele geçirmesine izin verebilir.

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: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2: nt!KiBugCheckDispatch+0x69
ffffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt!KiFastFailDispatch+0xd0
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9: nt!KiRaiseSecurityCheckFailure+0x3d0
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951: nt! ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000
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+0x13
000000ee'f25ed2b8 00000000'00000000: 00000000'00000000 00000000'00000000 00000000'00000000

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

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

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

MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

1: kd > lmvm nt
Tam 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
DahiliAdı: ntkrnlmp.exe
Orijinal Dosya 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)

Yukarıdaki örnekte, analiz ntkrnlmp.exe çekirdek dosyasına işaret etti. Bellek dökümü analizi bir sistem sürücüsüne (örneğin, win32k.sys) veya bir çekirdek dosyasına (örneğin, örneğimizde ntkrnlmp.exe) işaret ettiğinde, büyük olasılıkla verilen 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'nin üçüncü taraf bir sürücüden kaynaklandığını görürseniz, adı MODULE_NAME ve IMAGE_NAME değerlerinde listelenecektir.

Ö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.

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

saat Windows çöküyor genellikle bir "bellek dökümü" oluşturulur. İkincisi, ücretsiz hata ayıklama aracıyla keşfedilebilir. Windows aracı Sizi sorunun kaynağına yönlendirebilecek Hata Ayıklama Araçları. 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 ile başlayan ve Windows 2008 ile biten birçok işletim sistemi ile çalışır, bu nedenle herhangi bir sorun yaşamazsınız. Evet Windows 7 RC altında stabil 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 edecek bellek dökümleri oluşturması gerekir. Bu nedenle, Windows'un dökümler oluşturacak şekilde yapılandırılması önemlidir. İşletim sisteminizi özelleştirmek için tıklayın sağ tık Farenizi Bilgisayarınızın üzerine getirin ve Özellikler'i 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, Dosya menüsüne gidin ve Sembol Dosya Yolu'nu 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) olarak adlandırılan özel verilere giden yolu tanımlar.

Dizeyi girdikten sonra, Tamam düğmesine tıklayın. Daha sonra hata ayıklayıcı ile çalışırken, bu satır sembollerin msdl.microsoft.com'dan indirilmesine ve c:\symbols klasörüne kaydedilmesine neden olacaktır.

problemini çöz

Şimdi başka bir mavi ekran arızasını ve ardından bilgisayarın yeniden başlatılmasını bekleyin. Ardından WinDbg'yi tekrar ç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 ve program hemen onu analiz etmeye başlayacaktır.

Ne yazık ki, WinDbg ne yaptığı hakkında çok az bilgi sağlar, bu yüzden programın takıldığını bile düşünebilirsiniz. Ancak bekleyin. Anlayın, örneğin 4GB belleğin analizi çok değil güçlü bilgisayar saatlere kadar biraz zaman alabilir. 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 Bugcheck Analysis satırı tarafından kanıtlanmıştı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 kaynağını öğreneceksiniz. Özellikle, yüklediğiniz programlardan birine aitse veya yüklü sürücü, o zaman onu veya onu güncellemeyi deneyebilirsiniz. Belki bu sorunlarınızı çözecektir.

WinDbg'nin zaman zaman dosyayı hiç adlandıramadığını veya sadece Windows DLL'lerinden birini seçtiğini söylemeliyim. Bu size olduysa, durum çubuğunun üzerindeki komut penceresine tıklayın ve komutu yazın:

Bundan sonra Enter'a basın. Bu size hakkında bilgi içerebilecek daha ayrıntılı bir rapor sağlayacaktır. Olası nedenler senin dertlerin

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!

Windows için Hata Ayıklama Araçları- Windows işletim sistemlerinin kodunda hata ayıklama araçları. Bunlar, kullanıcı modu ve çekirdek modu kodunda hata ayıklamak için tasarlanmış, Microsoft'tan ücretsiz olarak dağıtılan bir dizi programdır: uygulamalar, sürücüler, hizmetler, çekirdek modülleri. Araç takımı, konsol ve GUI hata ayıklayıcılarını, sembollerle çalışmak için yardımcı programları, dosyaları, işlemleri, uzaktan hata ayıklama için yardımcı programları içerir. Araç seti, sistemin çeşitli bileşenlerindeki arızaların nedenlerini bulabileceğiniz yardımcı programları içerir. Windows için Hata Ayıklama Araçları belirli bir andan itibaren bağımsız bir dağıtım şeklinde indirilemez ve Windows SDK'nın (Windows Yazılım Geliştirme Seti) bir parçasıdır. Windows SDK ise MSDN Abonelik Programının bir parçası olarak mevcuttur veya msdn.microsoft.com adresinden ayrı bir dağıtım olarak ücretsiz olarak indirilebilir. Geliştiricilere göre, en yeni ve en büyük şimdiki versiyonu Windows için Hata Ayıklama Araçları, Windows SDK'sında bulunur.

Windows için Hata Ayıklama Araçları sık sık güncellenir ve halka sunulur ve bu işlem işletim sistemlerinin yayınlanmasına bağlı değildir. Bu nedenle, periyodik olarak yeni sürümleri kontrol edin.

Şimdi, özellikle Hata Ayıklama Araçları'nın ne için olduğunu görelim. Microsoft Windows:

  • hata ayıklama yerel uygulamalar, hizmetler (hizmetler), sürücüler ve çekirdek;
  • Ağ üzerinden hata ayıklama uzak uygulamalar, hizmetler (hizmetler), sürücüler ve çekirdek;
  • Çalışan uygulamaların hatalarını gerçek zamanlı olarak ayıklayın;
  • Uygulamaların, çekirdeğin ve sistemin bir bütün olarak bellek döküm dosyalarını analiz edin;
  • x86/x64/Itanium mimarilerine dayalı 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. İkisine ihtiyacımız var: x86 veya x64.

Windows için Hata Ayıklama Araçlarını kurmanın birkaç yolu vardır, bu yazıda sadece ana olanları ele alacağız:

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

Hangi noktada belirsizliğini koruyor, neden bir bilgisayara hata ayıklama araçları yüklemeliyim? Sonuçta, çoğu zaman, müdahalenin olduğu bir durumla karşı karşıya kalırsınız. çalışma ortamı son derece istenmeyen! Ve dahası, yeni bir ürünün yüklenmesinden bu yana, yani kayıt defteri / sistem dosyalarında değişiklik yapmak tamamen kabul edilemez olabilir. Görev açısından kritik sunucular örneklerdir. Geliştiriciler neden kurulum gerektirmeyen uygulamaların taşınabilir sürümlerini dikkate almıyor?
Sürümden sürüme, Windows için Hata Ayıklama Araçları paketini yükleme işlemi bazı değişikliklere uğrar. Şimdi doğrudan kurulum sürecine geçelim ve araç setinin nasıl kurulabileceğine bakalım.

Web Installer'ı Kullanarak Windows için Hata Ayıklama Araçlarını Yükleme

Windows SDK Arşivi sayfasına gidin ve Windows 10 adlı bir bölüm ve "Windows 10 SDK (10586) ve Microsoft Windows 10 Mobile Device Emulator (sürüm 10586.11)" öğesinin altında bulun.

Bir öğeye tıklayın SDK'YI YÜKLE. Tıkladıktan sonra işlemi başlatan sdksetup.exe dosyasını indirip çalıştırın. Windows çevrimiçi kurulumları SDK. İlk aşamada yükleyici, sistemde .NET Framework paketinin en son sürümünün kurulu olup olmadığını kontrol edecektir (şu anda 4.5'tir). Paket eksikse, kurulum teklif edilecek ve bittiğinde istasyon yeniden başlatılacaktır. Yeniden başlatmanın hemen ardından, kullanıcı yetkilendirme aşamasında, kurulum işlemi doğrudan Windows SDK ile başlar.

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

Windows için Hata Ayıklama Araçları kurulumu tamamlandıktan sonra, bu kurulum yöntemi ile hata ayıklama dosyalarının konumu aşağıdaki gibi olacaktır:

  • 64 bit sürümleri: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • 32 bit sürümler: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x86

* burada x.x, geliştirme kitinin belirli bir sürümüdür;
8 ve üzeri sürümlerin 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ı?

büyük bir artı Bu method Windows için Debigging Tools'u yüklemek, tüm mimariler için hata ayıklama araçlarının sürümlerini aynı anda yüklemektir.

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

Bu yöntem, tam Windows SDK (Yazılım Geliştirici Seti) yükleme görüntüsünü kullanarak Windows için Hata Ayıklama Araçlarını yüklemeyi içerir. Belirli bir zamana kadar indir iso görüntüsü uygun sistem için Windows SDK Arşivi sayfasını ziyaret edebilirsiniz. Ancak şu anda sdksetup.exe web yükleyicisini çalıştırarak ve öğeyi seçerek SDK'nın ISO görüntüsünü alabilirsiniz. Windows Yazılım Geliştirme Kitini indirin yükleyicinin başlangıç ​​penceresinde:

Anlaşıldığı gibi, web yükleyiciyi kullanan önceki kurulum yöntemi oldukça kaprislidir ve çoğu zaman başarısız olur. Üzerinde temiz sistemler sorunsuz bir şekilde kurulur, ancak yeterince yüklenmişse, çok sayıda sorun ortaya çıkar. Bu sizin için geçerliyse, bu yöntemi kullanın.

Buna göre, sayfada benim için (ve bence çoğu için) gerekli dağıtım kitini seçmeniz gerekiyor, şu anda "Windows 7 ve .NET Framework 4 için Windows SDK" ve "Al" bağlantısına biraz daha düşük tıklayın. DVD ISO görüntüsü" .

msdn.microsoft.com sitesi ile çalışırken kullanmanızı tavsiye ederim. internet tarayıcısı Explorer çünkü rakip ürünlerin çalışmadığı görüldü!

Buna göre, sadece gerektiği kadar seçmek gerekir. Genellikle Windows için Hata Ayıklama Araçları bitliği, sistemin bitliği ile aynıdır. Test sistemlerim çoğunlukla 64 bit, bu nedenle çoğu durumda GRMSDKX_EN_DVD.iso 64 bit sistem için görüntüyü indiririm.
Ardından imajı indirdikten sonra bir şekilde mevcut ISO imajı ile çalışmamız gerekiyor. Geleneksel yol elbette bir CD yazmaktır, ancak bu oldukça uzun ve bazen maliyetli 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 programını kullanmayı tercih ediyorum. Birisi, dedikleri gibi, tat ve renkte başka tercihlere, daha doğrudan veya hafif yardımcı programlara sahip olabilir .. Kurulumdan sonra Daemon araçları Lite, sadece GRMSDKX_EN_DVD.iso görüntü dosyasına çift tıklıyorum ve sistemimde yeni bir sanal CD var:

Sonra otomatik yüklemeyi etkinleştirmek ve çalıştırmak için çift tıklıyorum Windows kurulumu SDK:

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


Bu doğru, ekran görüntüsü iki seçeneği gösterir: "Windows Performans Araç Takımı" ve "Windows için Hata Ayıklama Araçları". Her ikisini de seçin, çünkü Windows Performance Toolkit işinizde kesinlikle işe yarayacaktır! Ayrıca, "İleri" düğmesine tıkladıktan sonra kurulum normal modda devam eder. Ve sonunda "Kurulum Tamamlandı" yazısını göreceksiniz.
Kurulum tamamlandıktan sonra, Windows için Hata Ayıklama Araçları kitinin çalışma dizinleri aşağıdaki gibi olacaktır:

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

Bu, Windows için Hata Ayıklama Araçları'nın kurulumunu tamamlar.

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

Windows için Hata Ayıklama Araçları yüklemesi sırasında önceki iki yolla sorun olması durumunda, bir kereden fazla yardımcı olan, en güvenilir ve zaman içinde test edilmiş bir tane daha var. Bir zamanlar, Windows SDK'ya entegrasyondan önce, Windows için Hata Ayıklama Araçları ayrı bir .msi yükleyicisi olarak mevcuttu, bu hala bulunabiliyor, ancak zaten Windows SDK dağıtımının bağırsaklarında bulunuyordu. Halihazırda elimizde Windows SDK'nın bir ISO görüntüsü bulunduğundan, onu sisteme monte edemiyoruz, sadece onu iyi bilinen WinRAR arşivleyicisini veya ISO disklerinin içeriğiyle çalışan başka bir ürünü kullanarak açabiliyoruz.

Görüntüyü açtıktan sonra kökte bulunan "Kurulum" dizinine gitmemiz ve ardından dizinlerden birini seçmemiz gerekiyor:

  • 64 bit sürümünü yüklemek için: \Kurulum\WinSDKHata AyıklamaAraçları_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.

Kurulum tamamlandıktan sonra, Windows için Hata Ayıklama Araçları kitinin ç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 Dosyaları\Hata Ayıklama Araçları (x64)

Bu noktada Windows için Hata Ayıklama Araçları kurulumu tamamlanmış sayılabilir.

Ek Bilgiler

Neyle bağlantılı olduğunu bilmiyorum, belki benim dikkatsizliğimdendir, ancak Windows için Hata Ayıklama Araçları'nı yükledikten sonra, yükleyici, Yol sistem yolu değişkenindeki hata ayıklayıcıyla dizinin yolunu ayarlamaz. Bu, çeşitli hata ayıklama görevlerini doğrudan konsoldan çalıştırma konusunda belirli kısıtlamalar getirir. Bu nedenle, bir yolun yokluğunda kendim pencereye yazarım Ortam Değişkenleri hata ayıklama araçlarına giden yol:

  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
  • C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

* Sizin durumunuzda, yollar hem farklı bitliğe sahip bir işletim sisteminin kullanılması hem de farklı bir sürümdeki bir SDK'nın kullanılması nedeniyle farklılık gösterebilir.

Windows için Hata Ayıklama Araçları paketinin yardımcı programları taşınabilir uygulamalar olarak çalışabilir; çalışma sistemi katalog Microsoft Windows Performans Araç Seti ve bir üretim sunucusunda taşınabilir bir sürüm olarak kullanın. Ama sistemin kapasitesini hesaba katmayı unutmayın!! Paketin tam kurulumunu kritik bir sisteme yapmış olsanız bile, kurulumdan hemen sonra çalışmaya başlayabilirsiniz, yeniden başlatma gerekmez.

Windows için Hata Ayıklama Araçları

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

Dosya Amaç
adplus.doc ADPlus yardımcı programı için belgeler.
adplus.exe Bir veya daha fazla işlem için dökümler, günlük dosyaları oluşturmak için cdb hata ayıklayıcısının çalışmasını otomatikleştiren bir konsol uygulaması.
agestore.exe Sembol sunucusu veya kaynak sunucu tarafından kullanılan depolamadan eski dosyaları kaldırmak için bir yardımcı program.
breakin.exe CTRL+C tuşlarına basmaya benzer şekilde, işlemlere özel bir mola kombinasyonu göndermenize olanak sağlayan bir yardımcı program.
cdb.exe Kullanıcı modu konsol hata ayıklayıcısı.
convertstore.exe Karakterleri 2 katmandan 3 katmana dönüştürmek için yardımcı program.
dbengprx.exe Uzaktan hata ayıklama için Ripiter (proxy sunucusu).
dbgpc.exe Bir RPC çağrısının durumu hakkında bilgi 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 doğrulama yardımcı programı. için yardımcı program çabuk kontrol döküm dosyası.
dumpexam.exe Bir 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ı sistemler için kd olarak adlandırılan şey bu muydu? Muhtemelen uyumluluk nedeniyle 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 adlandırılan şey bu muydu? Muhtemelen uyumluluk nedeniyle bırakılmıştır.
kd.exe Çekirdek modu konsol 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 yardımcı program.
kdsrv.exe KD için bağlantı sunucusu. Yardımcı program, çalışan ve uzak bağlantıları bekleyen küçük bir uygulamadır. kd bir istemci üzerinde çalışır ve uzaktan hata ayıklama için o 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 yardımcı program.
list.exe Bir dosyanın içeriğini ekranda görüntülemek için bir yardımcı program. Bu minyatür yardımcı program tek bir amaç için paketlenmiştir - büyük metin veya günlük dosyalarını görüntülemek. Metni parçalar halinde yüklediği için az bellek alanı kaplar.
kaydedici.exe Yalnızca bir işlemle çalışabilen küçük bir hata ayıklayıcı. Yardımcı program, incelenen programın tüm işlev çağrılarını ve diğer eylemlerini kaydeden işlem alanına logexts.dll'yi enjekte eder.
logviewer.exe logger.exe hata ayıklayıcı tarafından yazılan günlükleri görüntülemek için bir yardımcı program.
ntsd.exe Microsoft NT Sembolik Hata Ayıklayıcı (NTSD). Başlangıçta bir metin penceresi oluşturması dışında cdb ile aynı olan bir hata ayıklayıcı. CDb gibi, ntsd de hem konsol uygulamalarında hem de grafik uygulamalarında hata ayıklama yeteneğine sahiptir.
pdbcopy.exe Bir sembol dosyasından özel sembolleri kaldırmak, bir sembol dosyasında bulunan genel sembolleri kontrol etmek için bir yardımcı program.
uzak.exe Herhangi bir KD, CDB ve NTSD konsol hata ayıklayıcısının uzaktan hata ayıklaması ve uzaktan kontrolü için yardımcı program. Tüm bu konsol hata ayıklayıcılarını uzaktan çalıştırmanıza izin verir.
rtlist.exe Uzak Görev Görüntüleyici. Yardımcı program bir liste görüntülemek için kullanılır çalışan süreçler DbgSrv sunucu işlemi aracılığıyla.
symchk.exe Microsoft sembol sunucusundan sembolleri indirmek ve yerel bir sembol önbelleği oluşturmak için bir yardımcı program.
symstore.exe Bir ağ oluşturmak için yardımcı program veya yerel depolama karakterler (2 katmanlı/3 katmanlı). Sembol deposu, disk üzerinde belirli bir yapıya göre 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. Sırayla, bu alt klasörlerin her biri, ikili dosyaların birleştirilmesiyle 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 semboller 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şlemleri listelemek için bir yardımcı program.
umdh.exe Kullanıcı modu döküm yığını yardımcı programı. Seçili bir işlemin yığınlarını analiz etmek için bir yardımcı program. Yığın için çeşitli seçenekleri görüntülemenizi sağlar.
usbview.exe USB görüntüleyici. görüntülemek için yardımcı program USB cihazları bir bilgisayara bağlı.
vmdemux.exe Sanal Makine Demultiplexer. Tek bir COM bağlantısı için birden çok adlandırılmış kanal oluşturur. Kanallar, sanal makinenin çeşitli bileşenlerinde hata ayıklamak için kullanılır
Windbg.exe GUI ile kullanıcı modu ve çekirdek modu hata ayıklayıcı.