Počítače Okna Internet

Instalace ladicích nástrojů pro Windows. Nástroje pro ladění systému Windows: Diagnostika a oprava Nástroje pro ladění BSOD pro použití ve Windows

dne 22. června 2010

Dříve byl Windbg k dispozici ke stažení samostatně. Ale pro nejnovější verze je Microsoft ponechává jako součást Windows SDK. Níže naleznete odkazy ke stažení.

Windows 10

Nejnovější verzi Windbg pro Windows 7 lze stáhnout z odkazu https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

Windows 7

Stáhněte si instalační programy z výše uvedených odkazů. Všimněte si, že to nestáhne celé SDK, je to pouze instalační program. Po spuštění souboru si můžete vybrat, které nástroje chcete stáhnout. Pokud vás zajímá pouze Windbg, můžete vyloučit vše ostatní a vybrat pouze ‚Nástroje ladění‘ v části ‚Obecné nástroje‘

Výše uvedený balíček nainstaluje verzi windbg 6.12. Pokud chcete rychle nainstalovat windbg, můžete použít starší verzi (6.11), kterou si můžete stáhnout z
odkaz uvedený na konci tohoto příspěvku.

Jakmile provedete instalaci, můžete program najít v nabídce Start -> Všechny programy -> Nástroje pro ladění pro Windows -> Windbg

V době kritického selhání se operační systém Windows přeruší a zobrazí modrá obrazovka smrt (BSOD). Obsah paměť s náhodným přístupem a všechny informace o chybě, ke které došlo, jsou zapsány do stránkovacího souboru. Při dalším bootování Windows na základě uložených dat se vytvoří výpis zhroucení s informacemi o ladění. V protokolu systémových událostí se vygeneruje záznam kritické chyby.

Pozornost! Výpis zhroucení se nevygeneruje, pokud diskový subsystém selže nebo kritická chyba se objevil v počáteční fázi spouštění systému Windows.

Typy výpisů při selhání systému Windows

Na příkladu aktuálního operačního systému Windows 10 (Windows Server 2016) zvážíme hlavní typy výpisů paměti, které může systém vytvořit:

  • Malý výpis paměti(256 kB). Tento typ souboru obsahuje minimální množství informací. Obsahuje pouze chybovou zprávu BSOD, informace o ovladačích, procesech, které byly aktivní v době havárie, a který proces nebo vlákno jádra způsobilo havárii.
  • Výpis paměti jádra... Typicky malá velikost - jedna třetina fyzické paměti. Výpis paměti jádra je podrobnější než malý výpis. Obsahuje informace o ovladačích a programech v režimu jádra a zahrnuje paměť přidělenou jádru Windows a hardwarové abstraktní vrstvě (HAL) a paměť přidělenou ovladačům a dalším programům v režimu jádra.
  • Kompletní výpis paměti... Největší objem a vyžaduje paměť rovnající se paměti RAM vašeho systému plus 1 MB, požadovaná okna k vytvoření tohoto souboru.
  • Automatický výpis paměti... Pokud jde o informace, odpovídá výpisu paměti jádra. Liší se pouze tím, kolik místa využívá ke generování souboru výpisu. Tento typ souboru v systému Windows 7 neexistoval. Byl přidán ve Windows 8.
  • Aktivní výpis paměti... Tento typ odfiltruje položky, které nemohou určit příčinu selhání systému. To bylo přidáno do Windows 10 a je zvláště užitečné, pokud používáte virtuální počítač nebo pokud je váš systém hostitelem Hyper-V.

Jak povolím výpis paměti v systému Windows?

Pomocí Win + Pauza otevřete okno nastavení systému, vyberte " Další systémové parametry"(Pokročilé systémové nastavení). Na kartě „ dodatečně"(Pokročilé), sekce" "(Spuštění a obnovení) klikněte" Možnosti"(Nastavení). V okně, které se otevře, nakonfigurujte akce v případě selhání systému. Zaškrtněte políčko " Zapisujte události do systémového protokolu(Zapište událost do systémového protokolu), vyberte typ výpisu, který se má vygenerovat při zhroucení systému. Pokud je v zaškrtávacím políčku „ Přepsat existující soubor výpisu"(Přepsat jakýkoli existující soubor) zaškrtněte políčko, pak bude soubor přepsán při každém selhání. Je lepší zrušit toto zaškrtávací políčko, pak budete mít více informací pro analýzu. Zakázat také Automaticky restartovat.

Ve většině případů bude k analýze příčiny BSOD stačit malý výpis paměti.

Nyní, když dojde k BSOD, můžete analyzovat soubor výpisu a najít příčinu selhání. Minidump se standardně ukládá do složky % systemroot% \ minidump. K analýze souboru výpisu doporučuji použít program WinDBG(Microsoft Kernel Debugger).

Instalace WinDBG na Windows

Utility WinDBG je součástí " Windows 10 SDK"(Windows 10 SDK). ...

Soubor se nazývá winsdksetup.exe, velikost 1,3 MB.

Spusťte instalaci a vyberte si, co přesně chcete udělat – nainstalovat balíček na tento počítač nebo si jej stáhnout pro instalaci na jiné počítače. Nainstalujte balíček do místního počítače.

Můžete nainstalovat celý balíček, ale chcete-li nainstalovat pouze ladicí nástroj, vyberte Nástroje pro ladění pro Windows.

Po instalaci naleznete zástupce WinDBG v nabídce Start.

Konfigurace přidružení souborů .dmp k WinDBG

Chcete-li otevřít soubory výpisu pouhým kliknutím, spojte příponu .dmp s nástrojem WinDBG.

  1. Otevřít příkazový řádek jako správce a spusťte příkazy pro 64bitový systém: cd C: \ Program Files (x86) \ Windows Kits \ 10 \ Debuggers \ x64
    windbg.exe –IA
    pro 32bitový systém:
    C: \ Program Files (x86) \ Windows Kit \ 10 \ Debuggers \ x86
    windbg.exe –IA
  2. V důsledku toho budou typy souborů: .DMP, .HDMP, .MDMP, .KDMP, .WEW - spojeny s WinDBG.

Nastavení serveru symbolů ladění ve WinDBG

Ladicí symboly (ladicí symboly nebo soubory symbolů) jsou bloky dat generované během kompilace programu spolu se spustitelným souborem. Takové datové bloky obsahují informace o jménech proměnných, nazývaných funkce, knihovny atd. Tato data nejsou potřebná při provádění programu, ale jsou užitečná při jeho ladění. Komponenty společnosti Microsoft jsou kompilovány se symboly distribuovanými prostřednictvím serveru Microsoft Symbol Server.

Nakonfigurujte WinDBG na používání Microsoftu Symbolový server:

  • Otevřete WinDBG;
  • Přejděte do nabídky Soubor –> Cesta k souboru symbolů;
  • Přidejte řádek obsahující adresu URL pro stažení symbolů ladění z webu společnosti Microsoft a složku pro uložení mezipaměti: SRV * E: \ Sym_WinDBG * http: //msdl.microsoft.com/download/symbols V příkladu je načtena mezipaměť do složky E: \ Sym_WinDBG, můžete zadat libovolný.
  • Nezapomeňte uložit změny v nabídce Soubor–>Uložit pracovní prostor;

WinDBG vyhledá symboly v místní složce a pokud v ní potřebné symboly nenajde, automaticky stáhne symboly z určeného webu. Pokud chcete přidat vlastní složku se symboly, můžete to udělat takto:

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

Pokud nemáte připojení k internetu, stáhněte si nejprve sadu symbolů ze zdroje Windows Symbol Packages.

Analýza výpisu zhroucení ve WinDBG

Ladicí program WinDBG otevře soubor výpisu a stáhne potřebné ladicí symboly z místní složky nebo z Internetu. Během tohoto procesu nelze použít WinDBG. V dolní části okna (v příkazovém řádku debuggeru) se objeví nápis Debugee není připojen.

Příkazy se zadávají do příkazového řádku umístěného ve spodní části okna.

Nejdůležitější věcí, které je třeba věnovat pozornost, je kód chyby, který je vždy uveden v hexadecimální hodnotě a vypadá 0xXXXXXXXXX(uvedeno v jedné z možností - STOP:, 02.07.2019 0008F, 0x8F). V našem příkladu je kód chyby 0x139.

Ladicí program vás vyzve ke spuštění příkazu! Analyze -v, stačí najet myší na odkaz a kliknout. K čemu je tento příkaz?

  • Provádí předběžnou analýzu výpisu paměti a poskytuje detailní informace pro zahájení analýzy.
  • Tento příkaz zobrazí kód STOP a symbolický název chyby.
  • Zobrazuje zásobník volání příkazů, které vedly k abnormálnímu ukončení.
  • Kromě toho se zde zobrazují chyby v IP adrese, procesech a registrech.
  • Tým může poskytnout hotová doporučení pro řešení problému.

Hlavní body, kterým byste měli věnovat pozornost při analýze po spuštění příkazu! Analyze –v (výpis není úplný).

1: kd>! Analýza -v


* *
* Analýza kontroly chyb *
* *
*****************************************************************************
Symbolický název chyby STOP (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Popis chyby (Komponenta jádra poškodila kritickou datovou strukturu. Toto poškození by mohlo útočníkovi umožnit převzít kontrolu nad tímto počítačem):

Komponenta jádra poškodila kritickou datovou strukturu. Poškození by mohlo potenciálně umožnit uživateli se zlými úmysly získat kontrolu nad tímto počítačem.
Argumenty chyby:

Argumenty:
Arg1: 0000000000000003, položka LIST_ENTRY byla poškozena (tj. dvojité odstranění).
Arg2: ffffd0003a20d5d0, Adresa rámce trapu pro výjimku, která způsobila kontrolu chyb
Arg3: ffffd0003a20d528, Adresa záznamu výjimky pro výjimku, která způsobila kontrolu chyb
Arg4: 0000000000000000, Rezervováno
Podrobnosti ladění:
------------------

Počítadlo ukazuje, kolikrát se systém zhroutil s podobnou chybou:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

Kód chyby STOP ve zkráceném formátu:

BUGCHECK_STR: 0x139

Proces, při jehož provádění došlo k chybě (nemusí být nutně příčinou chyby, právě v době selhání v paměti tento proces běžel):

PROCESS_NAME: sqlservr.exe

Dešifrování kódu chyby: Systém v této aplikaci zjistil přetečení zásobníku, což by mohlo umožnit útočníkovi převzít kontrolu nad touto aplikací.

ERROR_CODE: (NTSTATUS) 0xc0000409 - Systém v této aplikaci zjistil přetečení vyrovnávací paměti založené na zásobníku. Toto překročení by mohlo potenciálně umožnit uživateli se zlými úmysly získat kontrolu nad touto aplikací.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - Systém v této aplikaci zjistil přetečení vyrovnávací paměti založené na zásobníku. Toto překročení by mohlo potenciálně umožnit uživateli se zlými úmysly získat kontrolu nad touto aplikací.

Poslední call na stacku:

LAST_CONTROL_TRANSFER: z ffff8040117d6a9 na ffff8040116b0a0

Zásobník volání v době selhání:

STACK_TEXT:
ffffd000`3a20d2a8 ffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffugd005`3a20d
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2Bug6Check +
ffffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000 00000000`00000000`00000000`00000000`00000000 00
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`0000006 Kifa + 0000006 KifR9:0000006
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951 ?? :: FNODOBFM :: `string" + 0x17252
ffffd000`3a20d8c0 ffff804`013a34ac: 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 ffffe001`0a:nt + I0003ServiceTa90a34c
ffffd000`3a20d990 ffffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`00000000 0000000 000000Fieb + 0ntxf1380: 0W6
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000 00000000`00000000`00000000`00000000`00000000 0000000000000000000000000000000000000000000000000000000000000000000000
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000 00000000`00000000 000000000 000000 000000 000000

Část kódu, kde došlo k chybě:

FOLLOWUP_IP:
KiFastFailDispatch + d0
fffff804`0117da50 c644242000 mov byte ptr, 0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nic! KiFastFailDispatch + d0
FOLLOWUP_NAME: Majitel stroje

Název modulu v tabulce objektů jádra. Pokud analyzátor detekuje problematický ovladač, zobrazí se název v polích MODULE_NAME a IMAGE_NAME:

MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

1: kd> lmvm nt
Procházet úplný seznam modulů
Načtený soubor obrázku symbolu: ntkrnlmp.exe
Soubor obrázku namapované paměti: C: \ ProgramData \ dbg \ sym \ ntoskrnl.exe \ 5A9A2147787000 \ ntoskrnl.exe
Cesta k obrázku: ntkrnlmp.exe
Název obrázku: ntkrnlmp.exe
Interní název: ntkrnlmp.exe
Původní název souboru: ntkrnlmp.exe
Verze produktu: 6.3.9600.18946
FileVersion: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

Ve výše uvedeném příkladu analýza ukázala na soubor jádra ntkrnlmp.exe. Když analýza výpisu paměti ukazuje na systémový ovladač (například win32k.sys) nebo soubor jádra (například ntkrnlmp.exe v našem příkladu), je to s největší pravděpodobností tento soubor není příčinou problému. Velmi často se ukazuje, že problém spočívá v ovladači zařízení, nastavení BIOSu nebo hardwarová porucha.

Pokud jste viděli, že BSOD byl způsoben ovladačem třetí strany, jeho název bude uveden v hodnotách MODULE_NAME a IMAGE_NAME.

Například:

Cesta k obrázku: \ SystemRoot \ system32 \ drivers \ cmudaxp.sys
Název obrázku: cmudaxp.sys

Otevřete soubor ovladače a zkontrolujte jeho verzi. Ve většině případů se problém s ovladači vyřeší jejich aktualizací.

Nástroje pro ladění pro Windows- Nástroje pro ladění operačního kódu Systémy Windows... Jedná se o sadu svobodného softwaru od společnosti Microsoft určeného k ladění kódu uživatelského režimu a režimu jádra: aplikací, ovladačů, služeb, modulů jádra. Sada nástrojů obsahuje ladicí programy v režimu konzoly a GUI, nástroje pro práci se symboly, soubory, procesy a nástroje pro vzdálené ladění. Sada nástrojů obsahuje nástroje, pomocí kterých můžete najít příčiny poruch v různých komponentách systému. Nástroje pro ladění pro Windows od určitého okamžiku nejsou k dispozici ke stažení ve formě samostatné distribuční sady a jsou součástí Windows SDK (Windows Software Development Kit). Instrumentální sestava Nástroje Windows SDK je zase k dispozici jako součást programu předplatného MSDN nebo si jej lze zdarma stáhnout jako samostatnou distribuci z msdn.microsoft.com. Podle vývojářů poslední a nejvíce současná verze Nástroje pro ladění pro Windows jsou obsaženy v sadě Windows SDK.

Ladicí nástroje pro Windows jsou aktualizovány a zpřístupňovány veřejnosti poměrně často a tento proces nezávisí na vydání operačních systémů. Proto pravidelně kontrolujte nové verze.

Podívejme se nyní, k čemu konkrétně slouží Debugging Tools Microsoft Windows:

  • Ladění místních aplikací, služeb (služeb), ovladačů a jádra;
  • Ladění vzdálených aplikací, služeb (služeb), ovladačů a jádra přes síť;
  • Ladění běžících aplikací v reálném čase;
  • Analyzujte soubory výpisu paměti aplikace, jádra a systému jako celku;
  • Práce se systémy založenými na architektuře x86 / x64 / Itanium;
  • Ladění programů v uživatelském režimu a režimu jádra;

K dispozici jsou následující verze Debugging Tools pro Windows: 32bitová x86, Intel Itanium, 64bitová x64. Potřebujeme dva z nich: x86 nebo x64.

Existuje několik způsobů, jak nainstalovat nástroje pro ladění pro Windows, v tomto článku budeme zvažovat pouze ty hlavní:

  • Instalace přes webový instalátor.
  • Instalace ladicích nástrojů pro Windows z ISO Obrázek Windows SDK.
  • Instalace ladicích nástrojů pro Windows přímo z balíčků dbg_amd64.msi /dbg_x86.msi.

Zůstává nejasné, v jakém bodě, proč bych měl instalovat sadu nástrojů pro ladění do svého počítače? Často se přeci jen potýkáte se situací, kdy zásah do pracovní prostředí vysoce nežádoucí! Kromě toho může být zcela nepřijatelná instalace nového produktu, to znamená provádění změn v registru / systémových souborech. Příkladem jsou kritické servery. Proč vývojáři neuvažují o možnosti s přenosnými (přenosnými) verzemi aplikací, které nevyžadují instalaci?
Proces instalace balíčku Debugging Tools for Windows prošel mezi verzemi několika změnami. Pojďme nyní rovnou do procesu instalace a podívejme se na způsoby, jak lze sadu nástrojů nainstalovat.

Instalace ladicích nástrojů pro Windows pomocí webového instalačního programu

Přejděte na stránku Windows SDK Archive a vyhledejte sekci níže Název Windows 10 a nižší, viz „Windows 10 SDK (10586) a Microsoft Windows 10 Mobile Device Emulator (verze 10586.11)“.

Klikneme na položku INSTALOVAT SDK... Po kliknutí stáhněte a spusťte soubor sdksetup.exe, který zahájí online instalaci Windows SDK. V počáteční fázi instalační program zkontroluje, zda je v systému nainstalován balíček .NET Framework. Nejnovější verze(aktuálně 4.5). Pokud balíček chybí, nabídne se instalace a po dokončení se stanice restartuje. Ihned po restartu, ve fázi autorizace uživatele, se instalační proces spustí přímo ze sady Windows SDK.

Často se při výběru všech součástí balíčku bez výjimky mohou během procesu instalace objevit chyby. V tomto případě se doporučuje instalovat komponenty selektivně, minimální požadovaná sada.

Po dokončení instalace Debugging Tools for Windows bude umístění ladicích souborů pro tuto metodu instalace následující:

  • 64bitové verze: C: \ Program Files (x86) \ Windows Kit \ x.x \ Debuggers \ x64
  • 32bitové verze: C: \ Program Files (x86) \ Windows Kit \ x.x \ Debuggers \ x86

* kde x.x je konkrétní verze vývojového kitu;
Všimli jsme si, že verze 8 a vyšší jsou instalační cesty pro všechny znatelně odlišné od klasických předchozí verze nástroje pro ladění?

Obrovské plus tato metoda Instalace ladicích nástrojů pro Windows je instalace verzí ladicích nástrojů pro všechny architektury najednou.

Instalace ladicích nástrojů pro Windows z obrazu ISO sady Windows SDK

Tato metoda zahrnuje instalaci Debugging Tools for Windows pomocí úplného instalačního obrazu sady Windows SDK (Software Developers Kit). Do určité doby bylo možné stáhnout ISO obraz pro odpovídající systém na stránce Windows SDK Archive. V tuto chvíli však můžete získat obraz ISO sady SDK spuštěním webového instalačního programu sdksetup.exe a výběrem položky Stáhněte si sadu Windows Software Development Kit v úvodním okně instalačního programu:

Jak bylo zjištěno, předchozí způsob instalace pomocí webového instalátoru je značně rozmarný a často selže. Na čistých systémech se instaluje bez problémů, ale na dostatečně zatížených systémech se objevují četné problémy. Pokud máte právě takový případ, použijte tuto metodu.

Podle toho na stránce musíte vybrat požadovanou distribuční sadu, pro mě (a myslím, že pro mnohé) je to v tuto chvíli „Windows SDK pro Windows 7 a .NET Framework 4“ a hned níže klikněte na odkaz „Získat ISO obraz disku DVD"...

Při práci se stránkou msdn.microsoft.com vám doporučuji používat prohlížeč internet Explorer protože se vyskytly případy, kdy konkurenční produkty nefungovaly!

Podle toho je nutné volit pouze v případě potřeby. Obvykle je bitovost nástrojů pro ladění pro Windows stejná jako bitovost systému. Moje zkoumané systémy jsou většinou 64bitové, takže ve většině případů stahuji obraz pro 64bitový systém GRMSDKX_EN_DVD.iso.
Poté po stažení obrázku musíme nějak pracovat se stávajícím ISO obrazem. Tradičním způsobem je samozřejmě nahrávání CD, ale to je poměrně zdlouhavá a někdy i nákladná metoda. Pro vytváření virtuálních diskových zařízení v systému doporučuji používat bezplatné nástroje. Osobně k tomuto účelu nejraději používám program DEAMON Tools Lite. Někdo může mít jiné preference, přímější nebo odlehčené nástroje, chuť a barvu, jak se říká .. Po instalaci Nástroje DAEMON Lite, stačí dvakrát kliknout na soubor obrázku GRMSDKX_EN_DVD.iso a v systému se objeví nové virtuální CD:

Pak dvojklik Aktivuji automatické spouštění a spouštím instalaci Windows SDK:

Když přijde řada na výběr komponent, které se mají nainstalovat ze seznamu, zakážeme absolutně všechny možnosti kromě těch, které jsou vyznačeny na snímku obrazovky. To nám nyní pomůže vyhnout se zbytečným chybám.


Všechno je přesně tak, na snímku obrazovky jsou označeny dvě možnosti: "Windows Performance Toolkit" a "Debugging Tools for Windows". Vyberte si obojí, protože Windows Performance Toolkit se vám při práci určitě bude hodit! Dále po kliknutí na tlačítko "Další" instalace pokračuje jako obvykle. A na konci uvidíte nápis „Installation Complete“.
Na konci instalace budou pracovní adresáře sady Debugging Tools for Windows následující:

  • Pro x86 verzi:
  • Pro x64 verzi:

Tím je instalace ladicích nástrojů pro Windows dokončena.

Instalace ladicích nástrojů pro Windows prostřednictvím souboru MSI

Pro případ problémů při instalaci Debugging Tools for Windows dvěma předchozími způsoby máme ještě jeden, nejspolehlivější a léty prověřený, který pomohl takříkajíc nejednou. Kdysi, před integrací do Windows SDK, byly Debugging Tools for Windows dostupné jako samostatný .msi instalátor, který lze nalézt i nyní, ale již v útrobách distribuční sady Windows SDK. Protože už máme po ruce Obraz ISO systému Windows SDK, pak jej nemůžeme namontovat do systému, ale jednoduše otevřít pomocí známého archivátoru WinRAR, nebo jiného produktu, který pracuje s obsahem ISO-disků.

Po otevření obrázku musíme přejít do adresáře "Setup" umístěného v kořenovém adresáři a poté vybrat jeden z adresářů:

  • Instalace 64bitové verze: \ Setup \ WinSDKDebuggingTools_amd64 a z tohoto adresáře rozbalte soubor dbg_amd64.msi.
  • Instalace 32bitové verze: \ Setup \ WinSDKDebuggingTools a rozbalte soubor dbg_x86.msi z tohoto adresáře.

Na konci instalace budou pracovní adresáře sady Debugging Tools for Windows následující:

  • Pro x86 verzi: C: \ Program Files (x86) \ Debugging Tools for Windows (x86)
  • Pro x64 verzi: C: \ Program Files \ Debugging Tools for Windows (x64)

V tomto okamžiku je instalace Debugging Tools for Windows dokončena.

dodatečné informace

Nevím, s čím to souvisí, možná s mou neopatrností, ale po instalaci Debugging Tools for Windows instalační program nezaregistruje cestu k adresáři s debuggerem v systémové proměnné Path. To ukládá určitá omezení pro spouštění různých ladicích úloh přímo z konzole. Proto při absenci cesty sám píšu do okna Proměnné prostředí cesta k ladicím nástrojům:

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

* Ve vašem případě se cesty mohou lišit jak kvůli použití OS s jinou bitovou verzí, tak kvůli použití SDK jiné verze.

Obslužné programy balíčku Debugging Tools for Windows mohou fungovat jako přenosné aplikace, stačí zkopírovat adresář z pracovního systému Microsoft Windows Performance Toolkit a používat jej jako přenosnou verzi na produkčním serveru. Nezapomeňte však vzít v úvahu kapacitu systému !! I když jste kompletně nainstalovali balíček na kritický systém, můžete začít pracovat hned po instalaci, není vyžadován žádný restart.

Nástroje pro ladění pro složení systému Windows

A nyní konečně představíme složení ladicích nástrojů pro Windows:

Soubor Jmenování
adplus.doc Dokumentace k obslužnému programu ADPlus.
adplus.exe Konzolová aplikace, která automatizuje ladicí program cdb pro vytváření výpisů, souborů protokolu pro jeden nebo více procesů.
agestore.exe Obslužný program pro odstranění zastaralých souborů z úložiště používaného serverem symbolů nebo zdrojovým serverem.
breakin.exe Obslužný program, který umožňuje odeslat do procesů uživatelem definovanou kombinaci přerušení, podobně jako když stisknete CTRL + C.
cdb.exe Debugger konzoly v uživatelském režimu.
convertstore.exe Nástroj pro převod symbolů z 2vrstvých na 3vrstvé.
dbengprx.exe Reaper (proxy server) pro vzdálené ladění.
dbgrpc.exe Nástroj pro zobrazení informací o stavu volání RPC.
dbgsrv.exe Serverový proces používaný pro vzdálené ladění.
dbh.exe Nástroj pro zobrazení informací o obsahu souboru symbolů.
dumpchk.exe Nástroj pro kontrolu výpisu. Nástroj pro rychlou kontrolu souboru výpisu.
dumpexam.exe Nástroj pro analýzu výpisu paměti. Výsledek se zobrazí v % SystemRoot% \ MEMORY.TXT.
gflags.exe Editor globálních příznaků systému. Nástroj spravuje klíče registru a další nastavení.
i386kd.exe Zavinovačka pro kd. Kdy se to nazývalo kd pro systémy založené na Windows NT / 2000 pro počítače x86? Pravděpodobně odešel z důvodu kompatibility.
ia64kd.exe Zavinovačka pro kd. Kdy se to nazývalo kd pro systémy založené na Windows NT / 2000 pro stroje ia64? Pravděpodobně odešel z důvodu kompatibility.
kd.exe Debugger konzoly v režimu jádra.
kdbgctrl.exe Nástroj pro správu ladění jádra. Nástroj pro správu a konfiguraci připojení ladění jádra.
kdsrv.exe Připojovací server pro KD. Nástroj je malá aplikace, která se spustí a čeká vzdálená připojení... kd běží na klientovi a připojuje se k tomuto serveru pro vzdálené ladění. Server i klient musí pocházet ze stejného sestavení Debugging Tools.
kill.exe Nástroj pro ukončení procesů.
list.exe Nástroj pro zobrazení obsahu souboru na obrazovce. V balíčku se ukázalo, že tato miniaturní utilita má jediný účel - prohlížení velkých textových souborů nebo souborů protokolu. Při načítání textu po částech zabírá málo místa v paměti.
logger.exe Miniaturní debugger, který může pracovat pouze s jedním procesem. Obslužný program vloží soubor logexts.dll do prostoru procesu, který zaznamená všechna volání funkcí a další akce zkoumaného programu.
logviewer.exe Nástroj pro prohlížení protokolů zapsaných ladicím programem logger.exe.
ntsd.exe Microsoft NT Symbolic Debugger (NTSD). Debugger, identický s cdb, kromě toho, že při spuštění vytvoří textové pole. Stejně jako cdb je i ntsd schopen ladit konzolové aplikace i grafické aplikace.
pdbcopy.exe Nástroj pro odstranění soukromých symbolů ze souboru symbolů, kontrola nad veřejnými symboly obsaženými v souboru symbolů.
remote.exe Utilita pro vzdálené ladění a dálkové ovládání jakéhokoli ladicího programu konzoly KD, CDB a NTSD. Umožňuje vzdáleně spouštět všechny tyto ladicí programy konzoly.
rtlist.exe Vzdálený prohlížeč úloh. Obslužný program se používá k výpisu běžících procesů prostřednictvím procesu serveru DbgSrv.
symchk.exe Nástroj ke stažení symbolů ze serveru Microsoft Symbol Server a vytvoření místní mezipaměti symbolů.
symstore.exe Utilita pro vytvoření síťového nebo lokálního úložiště symbolů (2-vrstvé / 3-vrstvé). Úložiště symbolů je specializovaný adresář na disku, který je vytvořen podle určité struktury a obsahuje symboly. V kořenovém adresáři symbolů je vytvořena struktura podsložek s názvy shodnými s názvy komponent. Každá z těchto podsložek zase obsahuje vnořené podsložky se speciálními názvy získanými hašováním binárních souborů. Obslužný program symstore prohledá složky součástí a přidá nové součásti do úložiště symbolů, odkud je může získat kterýkoli klient. Říká se, že symstore se používá k získávání symbolů z 0-vrstvého úložiště a jejich vkládání do 2-vrstvého / 3-vrstvého úložiště.
tlist.exe Prohlížeč úkolů. Nástroj pro výpis všech běžících procesů.
umdh.exe Nástroj haldy výpisu v uživatelském režimu. Utilita pro analýzu hald (haldy) zvoleného procesu. Umožňuje zobrazit různé možnosti pro haldu.
usbview.exe USB prohlížeč. Nástroj pro prohlížení USB zařízení připojených k počítači.
vmdemux.exe Demultiplexor virtuální stroj... Vytvoří více pojmenovaných kanálů pro jedno připojení COM. Kanály se používají k ladění různých součástí virtuálního počítače
windbg.exe Debugger v uživatelském režimu GUI a v režimu jádra.

Představujeme WinDBG – část 1

Alexandr Antipov

WinDBG je skvělý debugger. Možná nemá příliš uživatelsky přívětivé rozhraní a ve výchozím nastavení nemá černé pozadí, ale v současnosti je to jeden z nejvýkonnějších a nejstabilnějších debuggerů ve Windows. V tomto článku vás provedu základy WinDBG, abyste s ním mohli začít.


WinDBG je skvělý debugger. Možná nemá příliš uživatelsky přívětivé rozhraní a ve výchozím nastavení nemá černé pozadí, ale v současnosti je to jeden z nejvýkonnějších a nejstabilnějších debuggerů ve Windows. V tomto článku vás provedu základy WinDBG, abyste s ním mohli začít.

Toto je první článek ze série o WinDBG. Seznam všech článků zahrnutých v tomto cyklu:

  • Část 1 - instalace, rozhraní, symboly, vzdálené / místní ladění, systém nápovědy, moduly, registry.
  • Část 2 - Body zlomu.
  • Část 3 - kontrola paměti, krok za krokem ladění programu, tipy a triky.

V tomto článku se budeme zabývat instalací a připojením k procesu a v následujícím se budeme zabývat body přerušení, laděním krok za krokem a kontrolou paměti.

Instalace WinDBG

Oproti Windows 7 doznal instalační proces pro WinDBG ve Windows 8 drobné změny. V této části vás provedeme instalací ladicího programu pro oba operační systémy.

Instalace WinDBG na Windows 8

Ve Windows 8 je WinDBG součástí Windows Driver Kit (WDK). Můžete nainstalovat Visual Studio a WDK nebo samostatně nainstalovat balíček Debugging Tools pro Windows 8.1, který obsahuje WinDBG.

Instalační program se zeptá, zda chcete nainstalovat WinDBG lokálně nebo stáhnout celý vývojářský balíček pro jiný počítač. Poslední jmenovaný je v podstatě ekvivalentem offline instalátoru, což je skvělé, pokud chcete balíček v budoucnu instalovat na jiné systémy.

Obrázek 1: Výběr typu instalace

V dalším okně je třeba zrušit zaškrtnutí všech položek kromě "Nástroje pro ladění Windows" a kliknout na tlačítko "Stáhnout".

Jakmile instalační program dokončí svou práci, přejděte do adresáře, kam byl balíček stažen (ve výchozím nastavení je to c: \ Users \ Username \ Downloads \ Windows Kits \ 8.1 \ StandaloneSDK) a projděte instalační procedurou.

Instalace WinDBG na Windows 7 a starší

Pro Windows 7 a starší je WinDBG součástí balíčku Debugging Tools for Windows, který je součástí Windows SDK a .Net Framework. Budete si muset stáhnout instalační program a poté během procesu instalace vybrat "Nástroje pro ladění pro Windows".

Během instalace jsem vybral možnost Debugging Tools v části Redistributable Packages, abych vytvořil samostatný instalační program pro usnadnění následných instalací.

Obrázek 2: Výběr možností instalace pro vytvoření samostatného instalačního programu

Po dokončení instalace byste měli mít instalační programy WinDBG pro různé platformy (v adresáři c: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Redist \ Debugging Tools for Windows \).

Obrázek 3: Složka s instalačními programy WinDBG pro různé platformy

Rozhraní WinDBG

Obrázek 4: Vzhled WinDBG

Jakmile poprvé uvidíte vzhled WinDGB, zjistíte, že debugger je děsivě jednoduchý. Většina funkcí WinDBG se naučí během ladění procesu. Namísto plýtvání časem popisováním rozhraní se v následujících částech budeme věnovat pouze nejdůležitějším bodům.

Nejzákladnější věcí, kterou potřebujete vědět o rozhraní ladicího programu, je příkazové okno, které má dvě oblasti. První oblast: okno, kde je zobrazen výsledek provedení příkazu. Druhá oblast: malé textové pole pro zadávání příkazů.

Obrázek 5: Příkazové okno WinDBG

Symboly

Ve většině případů WinDBG nevyžaduje žádná speciální nastavení a funguje správně hned po vybalení. Ale jedna důležitá věc, kterou je třeba vyladit, jsou symboly. Symboly jsou soubory, které jsou generovány se spustitelným souborem během kompilace programu a obsahují ladicí informace (funkce a názvy proměnných). Informace o ladění vám umožní prozkoumat funkčnost vaší aplikace při ladění nebo rozebírání. Mnoho součástí společnosti Microsoft je zkompilováno se symboly, které jsou distribuovány prostřednictvím serveru Microsoft Symbol Server. Se zbytkem spustitelných souborů není vše tak růžové - velmi zřídka jsou s aplikací dodávány soubory s ladicími informacemi. Ve většině případů společnosti omezují přístup k takovým informacím.

Chcete-li nakonfigurovat WinDBG pro použití Microsoft Symbol Server, přejděte na Soubor: Cesta k souboru symbolů a nastavte SRV * C: \ Symboly * http: //msdl.microsoft.com/download/symbols. Samozřejmě je trochu zvláštní, že se jako oddělovače používají hvězdičky. Po konfiguraci Microsoft Symbol Server se symboly stáhnou do složky C: \ Symbols.

Obrázek 6: Konfigurace serveru Microsoft Symbol Server

WinDBG v případě potřeby automaticky načte symboly pro binární soubory. Můžete také přidat vlastní složku se symboly, například takto:

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

Přidávání symbolů během ladění

Pokud potřebujete importovat symboly během ladění, můžete tak učinit pomocí .sympath (po připojení k procesu se objeví příkazové okno). Chcete-li například přidat složku c: \ SomeOtherSymbolFolder, zadejte následující příkaz:

0: 025> .sympath + c: \ SomeOtherSymbolFolder
Cesta hledání symbolu je: SRV * C: \ Symboly * http: //msdl.microsoft.com/download/symbols; c: \ SomeOtherSymbolFolder
Cesta pro hledání rozšířeného symbolu je: srv * c: \ symbols * http: //msdl.microsoft.com/download/symbols; c: \ someothersymbolfolder

Po přidání nebo změně cest nebude zbytečné znovu načítat symboly:

0: 025> .znovu načíst
Znovu načtení aktuálních modulů
................................................................
...............................................

Kontrola načtených symbolů

Chcete-li zjistit, pro které moduly jsou symboly načteny, můžete použít příkaz x *!. Přestože WinDBG načítá symboly pouze podle potřeby, znak x *! zobrazí symboly, které lze načíst. Načítání symbolů můžete vynutit pomocí příkazu ld * (to může nějakou dobu trvat a tento proces můžete zastavit přechodem na Debug: Break).

Nyní můžeme vidět symboly pro každý modul.

Obrázek 8: Seznam symbolů

Ladění místního procesu

Při ladění místního procesu máte dvě cesty:

  1. Připojte se k již běžícímu procesu.
  2. Spusťte proces pomocí WinDBG.

Každá metoda má své výhody a nevýhody. Pokud například spouštíte program přes WinDBG, máte k dispozici některé speciální možnosti ladění (například ladění haldy), které mohou aplikaci způsobit selhání. Na druhou stranu existují také programy, které se zhroutí, když k nim připojíte debugger. Některé aplikace (zejména malware) při startu kontrolují přítomnost debuggeru v systému a podle toho má v tomto případě smysl lpět na již běžícím procesu. Někdy dochází k ladění služby běžící pod OS Windows, která nastavuje některé parametry při spouštění, takže pro zjednodušení procesu ladění je také lepší připojit se k běžícímu procesu, než spouštět službu přes debugger. Někteří lidé tvrdí, že spuštění procesu prostřednictvím debuggeru má vážný dopad na výkon. Zkrátka vyzkoušejte obojí a vyberte si, co vám nejlépe vyhovuje. Pokud z nějakého důvodu preferujete konkrétní metodu, podělte se o své myšlenky v komentářích!

Spuštění procesu

Pokud ladíte samostatnou aplikaci, která běží lokálně a není připojena k síti, možná ji budete chtít spustit prostřednictvím WinDBG. To však neznamená, že se nemůžete připojit k již běžícímu procesu. Vyberte si způsob, který je pro vás nejpohodlnější.

Není těžké proces zahájit. Přejděte na "File: Open Executable" a vyberte spustitelný soubor, který chcete ladit. Můžete také zadat argumenty nebo nastavit počáteční adresář:

Obrázek 9: Výběr spustitelného souboru pro ladění

Procesní spojení

Připojení k již běžícímu procesu také není obtížné. Pamatujte však, že v některých případech může chvíli trvat, než najdete přesný proces, který chcete ladit. Některé prohlížeče například vytvoří jeden nadřazený proces a poté několik dalších procesů pro každou kartu. V závislosti na výpisu zhroucení, který ladíte, se tedy možná nebudete chtít připojit k nadřazenému procesu, ale k procesu spojenému s kartou.

Chcete-li připojit již běžící proces, přejděte na „Soubor: Připojit k procesu“ a poté vyberte PID nebo název procesu. Pamatujte, že musíte mít příslušná práva, abyste mohli tento proces využít.

Obrázek 10: Výběr procesu, ke kterému se má připojit

Pokud po připojení aplikace pozastavila svou práci, můžete zaškrtnutím příslušného políčka použít režim „Noninvaise“.

Ladění vzdáleného procesu

Někdy možná budete muset ladit proces na vzdáleném systému. Bylo by mnohem pohodlnější to provést pomocí místního debuggeru namísto použití virtuálního počítače nebo RDP. Nebo možná ladíte proces LoginUI.exe, který je dostupný pouze v případě, že je systém uzamčen. V situacích, jako je tato, můžete použít místní verzi WinDBG a připojit se k procesům vzdáleně. Existují dva nejběžnější způsoby plnění těchto úkolů.

Stávající relace ladění

Pokud jste již začali ladit svůj program lokálně (připojením nebo spuštěním procesu přes WinDBG), můžete zadat konkrétní příkaz a WinDBG spustí „posluchač“, ke kterému se vzdálený debugger může připojit. Chcete-li to provést, použijte příkaz .server:

Server tcp: port = 5005

Po spuštění výše uvedeného příkazu se může zobrazit varování, jako je toto:

Obrázek 11: Varovná zpráva, která se může objevit po spuštění příkazu k vytvoření „posluchadla“

Poté WinDBG oznámí, že server běží:

0: 005> .server tcp: port = 5005
0: -remote tcp: Port = 5005, Server = USER-PC

Nyní se můžete připojit ze vzdáleného hostitele k existující relaci ladění tak, že přejdete na „Soubor: Připojit ke vzdálené relaci“ a do textového pole napíšete něco takového: tcp: Port = 5005, Server = 192.168.127.138

Obrázek 12: Vzdálené připojení k relaci ladění

Po připojení obdržíte potvrzení na vzdáleném klientovi:


Server spuštěn. Klient se může připojit k libovolnému z těchto příkazových řádků
0: -remote tcp: Port = 5005, Server = USER-PC
NÁZEV STROJE \ Uživatel (tcp 192.168.127.138:13334) připojen v pondělí 16. prosince 09:03:03 2013

a zprávu pro místní verze debugger:

NÁZEV STROJE \ Uživatel (tcp 192.168.127.138:13334) připojen v pondělí 16. prosince 09:03:03 2013

Vytvoření vzdáleného serveru

Můžete také vytvořit samostatný server s WinDBG, připojit se k němu vzdáleně a vybrat proces k ladění. To lze provést pomocí souboru dbgsrv.exe, kde plánujete ladit procesy. Chcete-li spustit takový server, spusťte následující příkaz:

dbgsrv.exe -t tcp: port = 5005

Obrázek 13: Spuštění vzdáleného serveru

Opět se může zobrazit bezpečnostní varování, které byste měli přijmout:

Obrázek 14: Bezpečnostní zpráva, která se může objevit během spouštění ladicího serveru

K ladicímu serveru se můžete připojit tak, že přejdete do souboru „File: Connect to Remote Stub“ a do textového pole zadáte následující řádek: tcp: Port = 5005, Server = 192.168.127.138

Obrázek 15: Připojení k ladicímu serveru

Po připojení neobdržíte žádné signály, že jste se připojili, ale pokud přejdete na "File: Attach to a Process", uvidíte seznam procesů ladícího serveru (kde běží dbgsrv.exe). Nyní se můžete připojit k procesu, jako byste to dělali lokálně.

Systém nápovědy

Systém nápovědy ve WinDBG je skvělý. Kromě toho, že se naučíte něco nového, měli byste být schopni získat základní informace o příkazu. Pro přístup k nápovědě WinDBG použijte příkaz .hh:

Můžete také získat informace nápovědy pro konkrétní příkaz. Chcete-li například získat nápovědu k příkazu .reload, použijte následující příkaz:

windbg> .hh .znovu načíst

Nebo přejděte do části Nápověda: Obsah.

Moduly

Během běhu programu jsou importovány různé moduly, které zajišťují funkčnost aplikace. Pokud tedy víte, které moduly aplikace importuje, můžete lépe pochopit, jak funguje. V mnoha případech budete ladit konkrétní modul načtený programem, nikoli samotný spustitelný soubor.

Po připojení k procesu WinDBG automaticky zobrazí načtené moduly. Po připojení k calc.exe se například zobrazí níže uvedené moduly:

Microsoft (R) Windows Debugger verze 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. Všechna práva vyhrazena.

*** počkejte s čekajícím připojením
Cesta hledání symbolu je: SRV * C: \ Symboly * http: //msdl.microsoft.com/download/symbols
Spustitelná vyhledávací cesta je:
ModLoad: 00a70000 00b30000 C: \ Windows \ system32 \ calc.exe
ModLoad: 77630000 7776c000 C: \ Windows \ SYSTEM32 \ ntdll.dll
ModLoad: 77550000 77624000 C: \ Windows \ system32 \ kernel32.dll
ModLoad: 75920000 7596a000 C: \ Windows \ system32 \ KERNELBASE.dll
ModLoad: 76410000 77059000 C: \ Windows \ system32 \ SHELL32.dll
ModLoad: 77240000 772ec000 C: \ Windows \ system32 \ msvcrt.dll
ModLoad: 76300000 76357000 C: \ Windows \ system32 \ SHLWAPI.dll
ModLoad: 75cd0000 75d1e000 C: \ Windows \ system32 \ GDI32.dll
ModLoad: 75fa0000 76069000 C: \ Windows \ system32 \ USER32.dll
ModLoad: 777b0000 777ba000 C: \ Windows \ system32 \ LPK.dll
ModLoad: 774b0000 7754d000 C: \ Windows \ system32 \ USP10.dll
ModLoad: 73110000 732a0000 C: \ Windows \ WinSxS \ x86_microsoft.windows.gdiplus_
6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca \ gdiplus.dll
ModLoad: 75a80000 75bdc000 C: \ Windows \ system32 \ ole32.dll
ModLoad: 76360000 76401000 C: \ Windows \ system32 \ RPCRT4.dll
ModLoad: 777c0000 77860000 C: \ Windows \ system32 \ ADVAPI32.dll
ModLoad: 75be0000 75bf9000 C: \ Windows \ SYSTEM32 \ sechost.dll
ModLoad: 76270000 762ff000 C: \ Windows \ system32 \ OLEAUT32.dll
ModLoad: 74590000 745d0000 C: \ Windows \ system32 \ UxTheme.dll
ModLoad: 74710000 748ae000 C: \ Windows \ WinSxS \ x86_microsoft.windows.common-
ModLoad: 703d0000 70402000 C: \ Windows \ system32 \ WINMM.dll
ModLoad: 74c80000 74c89000 C: \ Windows \ system32 \ VERSION.dll
ModLoad: 77770000 7778f000 C: \ Windows \ system32 \ IMM32.DLL
ModLoad: 75c00000 75ccc000 C: \ Windows \ system32 \ MSCTF.dll
ModLoad: 74130000 7422b000 C: \ Windows \ system32 \ WindowsCodecs.dll
ModLoad: 74260000 74273000 C: \ Windows \ system32 \ dwmapi.dll
ModLoad: 756d0000 756dc000 C: \ Windows \ system32 \ CRYPTBASE.dll
ModLoad: 75e60000 75ee3000 C: \ Windows \ system32 \ CLBCatQ.DLL
ModLoad: 6ef10000 6ef4c000 C: \ Windows \ system32 \ oleacc.dll

Později v procesu ladění můžete tento seznam znovu zobrazit pomocí příkazu lmf:

0: 005> lmf
začátek a konec názvu modulu
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-
controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc \ COMCTL32.dll
74c80000 74c89000 VERZE C: \ Windows \ system32 \ VERZE.dll
756d0000 756dc000 CRYPTBASE C: \ Windows \ system32 \ CRYPTBASE.dll
75920000 7596a000 KERNELBASE C: \ Windows \ system32 \ KERNELBASE.dll
75a80000 75bdc000 ole32 C: \ Windows \ system32 \ ole32.dll
75be0000 75bf9000 sechost C: \ Windows \ SYSTEM32 \ sechost.dll
75c00000 75ccc000 MSCTF C: \ Windows \ system32 \ MSCTF.dll
75cd0000 75d1e000 GDI32 C: \ Windows \ system32 \ GDI32.dll
75e60000 75ee3000 CLBCatQ C: \ Windows \ system32 \ CLBCatQ.DLL
75fa0000 76069000 USER32 C: \ Windows \ system32 \ USER32.dll
76270000 762ff000 OLEAUT32 C: \ Windows \ system32 \ OLEAUT32.dll
76300000 76357000 SHLWAPI C: \ Windows \ system32 \ SHLWAPI.dll
76360000 76401000 RPCRT4 C: \ Windows \ system32 \ RPCRT4.dll
76410000 77059000 SHELL32 C: \ Windows \ system32 \ SHELL32.dll
77240000 772ec000 msvcrt C: \ Windows \ system32 \ msvcrt.dll
774b0000 7754d000 USP10 C: \ Windows \ system32 \ USP10.dll
77550000 77624000 kernel32 C: \ Windows \ system32 \ kernel32.dll
77630000 7776c000 ntdll C: \ Windows \ SYSTEM32 \ ntdll.dll
77770000 7778f000 IMM32 C: \ Windows \ system32 \ IMM32.DLL
777b0000 777ba000 LPK C: \ Windows \ system32 \ LPK.dll
777c0000 77860000 ADVAPI32 C: \ Windows \ system32 \ ADVAPI32.dll

Adresu zatížení pro konkrétní modul můžete také zjistit pomocí příkazu "lmf m":

0: 005> lmf m kernel32
začátek a konec názvu modulu
77550000 77624000 kernel32 C: \ Windows \ system32 \ kernel32.dll

Můžete také získat informace o záhlaví obrázku konkrétního modulu pomocí rozšíření! Dh ( Vykřičník označuje příponu):

0: 005>! Dh kernel32

Typ souboru: DLL
HODNOTY HLAVIČKY SOUBORU
Stroj 14C (i386)
4 počet sekcí
4A5BDAAD časové razítko datum po 13. července 21:09:01 2009

0 souborový ukazatel na tabulku symbolů
0 počet symbolů
Velikost E0 volitelné hlavičky
2102 charakteristik
Spustitelný
32bitový textový stroj
DLL

VOLITELNÉ HODNOTY ZÁPISU
10B magické #
Verze linkeru 9.00
Velikost kódu C4600
Velikost inicializovaných dat C800
0 velikost neinicializovaných dat
510C5 adresa vstupního bodu
1000 základ kódu
----- Nový -----
77550000 základ obrázku
Zarovnání 1000 sekcí
200 zarovnání souborů
3 subsystém (Windows CUI)
Verze operačního systému 6.01
Verze obrázku 6.01
Verze subsystému 6.01
Velikost obrázku D4000
800 velikost záhlaví
Kontrolní součet D5597
00040000 velikost rezervy zásobníku
00001000 velikost zásobníku potvrzení
00100000 velikost haldové rezervy
00001000 velikost potvrzení haldy
140 DLL charakteristik
Dynamická základna
NX kompatibilní
B4DA8 [A915] adresa exportního adresáře
BF6C0 [1F4] adresa importního adresáře
C7000 [520] adresa adresáře zdrojů
0 [0] adresa adresáře výjimek
0 [0] adresa adresáře zabezpečení
C8000 [B098] adresa adresáře přemístění báze
C5460 [38] adresa adresáře ladění
0 [0] adresa popisného adresáře
0 [0] adresa zvláštního adresáře
0 [0] adresa adresáře úložiště vláken
816B8 [40] adresa Load Configuration Directory
278 [408] adresa vázaného importního adresáře
1000 [DE8] adresa importního adresáře tabulky adres
0 [0] adresa adresáře Delay Import Directory
0 [0] adresa adresáře záhlaví COR20
0 [0] adresa vyhrazeného adresáře

ZÁhlaví SEKCE #1
.textový název
Virtuální velikost C44C1
1000 virtuální adresa
Velikost nezpracovaných dat C4600
800 souborový ukazatel na nezpracovaná data

0 počet přemístění
0 počet čísel řádků
60000020 vlajek
Kód
(není určeno zarovnání)
Provést čtení

Adresáře ladění (2)
Typ Velikost Ukazatel adresy
cv 25 c549c c4c9c Formát: RSDS, guid, 2, kernel32.pdb
(10) 4 c5498 c4c98

ZÁhlaví SEKCE # 2
.název dat
Virtuální velikost FEC
Virtuální adresa C6000
E00 velikost nezpracovaných dat
Ukazatel souboru C4E00 na nezpracovaná data
0 ukazatel souboru na tabulku přemístění
0 souborový ukazatel na čísla řádků
0 počet přemístění
0 počet čísel řádků
C0000040 příznaky
Inicializovaná data
(není určeno zarovnání)
Číst psát

ZÁhlaví SEKCE #3
Název .rsrc
virtuální velikost 520
Virtuální adresa C7000
600 velikost nezpracovaných dat
Ukazatel souboru C5C00 na nezpracovaná data
0 ukazatel souboru na tabulku přemístění
0 souborový ukazatel na čísla řádků
0 počet přemístění
0 počet čísel řádků
40000040 vlajek
Inicializovaná data
(není určeno zarovnání)
Pouze ke čtení

ZÁhlaví SEKCE # 4
.reloc jméno
Virtuální velikost B098
Virtuální adresa C8000
Velikost nezpracovaných dat B200
Ukazatel souboru C6200 na nezpracovaná data
0 ukazatel souboru na tabulku přemístění
0 souborový ukazatel na čísla řádků
0 počet přemístění
0 počet čísel řádků
42000040 vlajek
Inicializovaná data
Vyřazené
(není určeno zarovnání)
Pouze ke čtení

Zprávy a výjimky

Po připojení k procesu se nejprve zobrazí seznam modulů a poté se mohou objevit další zprávy. Například, když lpíme na calc.exe, WinDBG automaticky nastaví bod přerušení (což je jen značka používaná k zastavení aplikace). Zobrazí se informace o bodu přerušení:

(da8.b44): Výjimka pro přerušení instrukce - kód 80000003 (první šance)

Tato konkrétní zpráva je výjimkou, konkrétně výjimkou první šance. Výjimka je v podstatě zvláštní stav, ke kterému dochází během provádění programu. Výjimka první šance znamená, že se program zastavil ihned po vyvolání výjimky. Výjimka druhé šance znamená, že po výskytu výjimky budou provedeny některé operace a poté program zastaví svou práci.

Registry

Po zobrazení zpráv a výjimek debugger vypíše stav registrů procesoru. Registry jsou speciální proměnné v procesoru, které ukládají malé kousky informací nebo sledují stav něčeho v paměti. Procesor dokáže zpracovávat informace v těchto registrech velmi rychle. To je mnohem rychlejší než získávání informací z RAM na sběrnici pokaždé.

Po připojení k calc.exe WinDBG automaticky zobrazí informace o následujících registrech:

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

Později můžete tyto informace znovu duplikovat pomocí příkazu r:

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

Pokud chceme získat hodnotu konkrétního registru, můžeme provést následující příkaz:

0: 005> r eax
eax = 7ffd9000

Informace z několika registrů současně lze získat takto:

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

Ukazatel na pokyn

Poslední příkaz se zabývá spuštěnými instrukcemi. Zde se také na obrazovku vytisknou informace, jako v případě příkazu r, co obsahuje registr EIP. EIP je registr obsahující umístění další instrukce, kterou má procesor provést. To, co zobrazí WinDBG, je ekvivalentem příkazu u eip L1, po kterém WinDBG přejde na adresu zadanou v registru EIP, převede tuto sekci na kód sestavy a zobrazí ji na obrazovce.

ntdll! DbgBreakPoint:
77663540 ccm vnitřní 3

zůstat v kontaktu

V budoucích článcích se podíváme na to, jak používat WinDBG v živém prostředí: body přerušení, ladění krok za krokem a skenování paměti. Nepřepínejte! J.

Tyto typy poruch jsou obvykle spojeny s vadným ovladačem, který může být obtížné zjistit. Vylepšený systém sledování chyb ve Windows Vista (a nejen ve Vista!) vás však často může přivést k problematickému souboru. V důsledku toho se většina lidí přestane zběsile snažit pracovat na nestabilním počítači, ukládat dokumenty s paranoidní pravidelností a doufat v to nejlepší.

Na Windows se zhroutí obvykle se vytvoří tzv. „výpis paměti“. To druhé lze prozkoumat pomocí bezplatného ladicího programu nástroj Windows Nástroje pro ladění, které vás mohou nasměrovat ke zdroji problému. Proto vše, co musíte udělat, je:

Stáhněte si nástroj pro ladění

Nástroje pro ladění systému Windows si můžete stáhnout přímo z webu společnosti Microsoft. Program funguje s mnoha operačními systémy od Windows NT 4 až po Windows 2008, takže byste s ním neměli mít žádné problémy. Ano, nedá se říci, že by byl stabilní pod Windows 7 RC, ale podle našich testů stále funguje. Proto i pokus o diagnostiku problému z Windows 7 RC může být úspěšný.

Nakonfigurujte svůj systém

Je nutné, aby při haváriích váš počítač vytvářel výpisy paměti, které později poslouží jako zdroj informací pro debugger. Proto je důležité, aby byl systém Windows nakonfigurován tak, aby generoval výpisy. Chcete-li přizpůsobit svůj operační systém, klepněte na klikněte pravým tlačítkem myši myši na vašem počítači (Počítač) a vyberte Vlastnosti (Vlastnosti). Poté klikněte na kartu Upřesnit nastavení systému, vyhledejte podsekci Nastavení spouštění a obnovy a ujistěte se, že parametr Zápis ladicích informací je nastaven na Výpis paměti jádra ) nebo Úplný výpis paměti.

Dále klikněte na Start, přejděte na Všechny programy, vyberte Nástroje pro ladění a spusťte WinDbg. V programu přejděte do nabídky Soubor a vyberte Cesta k souboru symbolu ... Poté do okna, které se otevře, napište následující řádek:

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

Ten definuje cestu ke speciálním datům – tzv. „symbolům“, které mohou pomoci ladicímu nástroji identifikovat váš vadný soubor.

Po zadání řádku klikněte na tlačítko OK. Později, při práci s debuggerem, tento řádek stáhne symboly z msdl.microsoft.com a uloží je do složky c: \ symbols.

Vyřešte svůj problém

Nyní počkejte na další pád s modrou obrazovkou a následné dokončení restartu počítače. Poté znovu spusťte WinDbg (uživatelé Vista musí program spouštět jako správce), klepněte na nabídku Soubor, vyberte Otevřít Crash Dump, otevřete soubor \ Windows \ MEMORY.DMP a program jej okamžitě začne analyzovat.

Bohužel WinDbg poskytuje velmi málo informací o tom, co dělá, takže si můžete dokonce myslet, že je program zamrzlý. Nicméně počkejte. Pochopte, analyzovat řekněme 4GB paměti není moc výkonný počítač může nějakou dobu trvat, až hodiny. Buďte proto trpěliví a je lepší nechat analýzu přes noc.

Obvykle se však výsledek dostaví během několika minut. Svědčí o tom řádek analyzátoru chyby Bugcheck Analysis, hlásící něco jako "Pravděpodobně způsobeno: UACReplace.sys". V překladu do ruštiny to znamená, že problém je možná způsoben souborem UACReplace.sys. Zadejte jej do vyhledávacího pole jako Google a zjistíte jeho skutečný původ. Zejména pokud patří k některému z programů, které jste nainstalovali resp nainstalovaný ovladač pak se můžete pokusit aktualizovat ji nebo jeho. Možná to vyřeší problémy, které máte.

Nutno říci, že čas od času WinDbg neumí soubor vůbec pojmenovat, nebo jednoduše vybere některou z Windows DLL. Pokud se vám to stalo, klikněte na příkazové okno nad stavovým řádkem a zadejte příkaz:

Poté stiskněte Enter. Tím získáte podrobnější zprávu, která může obsahovat informace o možné důvody vaše potíže.

Pokud tentokrát nebudete mít štěstí, nezoufejte. Ladění je poměrně obtížné, a to i pro odborníky. Stačí tedy zavřít WinDbg a spustit analyzátor znovu po dalším pádu. Možná vám to poskytne další informace. Hodně štěstí!