nedenlerini belirlemek için mavi ekranlar(BSOD) bellek dökümünü analiz etmelidir. Ç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 Kurma

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, mevcut en son Windows sürümleri SDK:

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

22 Haziran 2010

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

Windows 10

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

Windows 7

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

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

Kurulumu yaptıktan sonra programı şurada bulabilirsiniz. başlangıç ​​menüsü-> Tüm Programlar -> Windows için Hata Ayıklama Araçları -> Windbg

Windows için Hata Ayıklama Araçları- İşletim kodu hata ayıklama araçları Windows sistemleri. 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. Enstrümantal set Windows araçları 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 genel kullanıma sunulur ve bu işlem hiçbir şekilde sürüme bağlı değildir. işletim sistemleri. 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:

  • Yerel uygulamalar, hizmetler (hizmetler), sürücüler ve çekirdekte hata ayıklama;
  • 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;

Mevcut sonraki sürümler Windows için Hata Ayıklama Araçları: 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ı ISO'dan Yükleme Windows görüntüsü SDK.
  • 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, Windows SDK'nın çevrimiçi kurulum sürecini başlatan sdksetup.exe dosyasını indirin ve çalıştırın. İlk aşamada yükleyici, sistemde .NET Framework paketinin kurulu olup olmadığını kontrol edecektir. En son sürüm(içinde şu an 4.5). 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, hata ayıklama dosyalarının konumu Bu method kurulumumuz şu şekilde olacak:

  • 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. Temiz sistemlerde sorunsuz kurulur, ancak yeterince yüklü sistemlerde ç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 bir tarayıcı kullanmanızı tavsiye ederim Internet Explorer, çünkü rakip ürünlerin çalışmadığı durumlar gözlemlendi!

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. kullanmayı öneriyorum ücretsiz yardımcı programlar sistemde sanal disk aygıtları oluşturmak için. Ş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 de dikkatsizliğimle, ancak Windows için Hata Ayıklama Araçları'nı yükledikten sonra, yükleyici, Yol sistem yolu değişkeninde 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ümün bir SDK'sı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 ara 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ı. Bir döküm dosyasını hızlı bir şekilde kontrol etmek için bir yardımcı program.
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, DbgSrv sunucu işlemi aracılığıyla çalışan işlemleri listelemek için kullanılır.
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 çoğullayıcı sanal makine. 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ı.

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 iki işletim sistemi için de hata ayıklayıcının yüklenmesini ele alacağız.

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 WinDBG'yi içeren Windows 8.1 için Hata Ayıklama Araçları paketini ayrı olarak kurun.

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

Ş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, WinDBG yükleyicilerine sahip olmanız gerekir. çeşitli platformlar(c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\ içinde).

Ş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ü

WinDGB'nin görünümünü ve verdiği hissi ilk gördüğünüzde, hata ayıklayıcının korkutucu derecede basit olduğunu anlayacaksınız. WinDBG işlevlerinin çoğu, işlem hata ayıklaması sırasında öğrenilir. Arayüzü 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. Ancak düzeltilmesi gereken önemli bir şey de sembollerdir. 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 kurulumu Sembol Sunucusu

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. şimdiden bağlan çalışan süreç.
  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" seçeneğine 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 "Ninvaise" 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 oluşturabilirsiniz ayrı sunucu WinDBG ile uzaktan bağlanın ve hata ayıklamak için bir işlem seçin. 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, bir komut hakkında yardım bilgisi alabilmeniz gerekir. WinDBG yardımına erişmek için .hh komutunu kullanın:

Belirli bir komut için yardım 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ülde hata ayıklıyor olacaksınız.

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

Microsoft (R) Windows Hata Ayıklayıcı Sürüm 6.12.0002.633 X86
Telif hakkı (c) Microsoft Corporation. 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: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ı gösterir):

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 büyü#
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 belleği görüntüleme. Değiştirme! J.