• Nástroje pro ladění pro použití ve Windows. Nainstalujte ladicí nástroje pro Windows. Instalace WinDBG na Windows

    K identifikaci příčin modré obrazovky (BSOD) je nutné analyzovat výpis paměti. V naprosté většině případů stačí minidump, který systém vytvoří v případě kritických chyb.
    Tento článek poskytuje podrobné pokyny pro instalaci a konfiguraci WinDBG, výkonného nástroje pro ladění, který vám umožní identifikovat skutečnou příčinu BSOD.

    Krok 1 — Nastavení záznamu s malým výpisem paměti

    Krok 2 — Instalace WinDBG

    Chcete-li analyzovat výpisy paměti, budete muset nainstalovat ladicí program WinDBG, který je součástí sady Windows SDK. V době psaní tohoto článku jsou nejnovější dostupné verze sady Windows SDK:

    • Windows 10 SDK (stáhněte si online instalační program)
    • Windows 8.1 SDK (stáhněte si online instalační program)

    Krok 3 — Mapování souborů .dmp na WinDBG

    Mapujte své soubory .dmp na WinDBG, abyste usnadnili čtení a analýzu výpisů paměti. To vám umožní otevírat soubory výpisu z Průzkumníka přímo ve WinDBG, čímž se obejde jeho předběžné spuštění.


    Krok 4 — Nastavení serveru symbolů pro příjem souborů symbolů ladění


    Instalace a počáteční konfigurace WinDBG je nyní dokončena. Chcete-li změnit jeho vzhled, můžete přejít do nabídky Pohled- nastavení písma najdete po výběru položky Písmo a nastavení okna konzoly v Možnosti.

    K identifikaci příčin modré obrazovky (BSOD) je nutné analyzovat výpis paměti. V naprosté většině případů stačí minidump, který systém vytvoří v případě kritických chyb.
    Tento článek poskytuje podrobné pokyny pro instalaci a konfiguraci WinDBG, výkonného nástroje pro ladění, který vám umožní identifikovat skutečnou příčinu BSOD.

    Krok 1 — Nastavení záznamu s malým výpisem paměti

    Krok 2 — Instalace WinDBG

    Chcete-li analyzovat výpisy paměti, budete muset nainstalovat ladicí program WinDBG, který je součástí sady Windows SDK. V době psaní tohoto článku jsou nejnovější dostupné verze sady Windows SDK:

    • Windows 10 SDK (stáhněte si online instalační program)
    • Windows 8.1 SDK (stáhněte si online instalační program)

    Krok 3 — Mapování souborů .dmp na WinDBG

    Mapujte své soubory .dmp na WinDBG, abyste usnadnili čtení a analýzu výpisů paměti. To vám umožní otevírat soubory výpisu z Průzkumníka přímo ve WinDBG, čímž se obejde jeho předběžné spuštění.


    Krok 4 — Nastavení serveru symbolů pro příjem souborů symbolů ladění


    Instalace a počáteční konfigurace WinDBG je nyní dokončena. Chcete-li změnit jeho vzhled, můžete přejít do nabídky Pohled- nastavení písma najdete po výběru položky Písmo a nastavení okna konzoly v Možnosti.

    Tyto typy selhání jsou obvykle spojeny se selháním ovladače, které může být obtížné přesně určit. Vylepšený systém sledování chyb ve Windows Vista (a nejen ve Vista!) vás však často může zavé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ší.

    Při pádu systému Windows se obvykle vytvoří takzvaný „výpis paměti“. Ten lze prozkoumat pomocí bezplatných nástrojů pro ladění systému Windows, které vás mohou nasměrovat na zdroj problému. Proto vše, co musíte udělat, je:

    Stáhněte si ladicí nástroj

    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, počínaje Windows NT 4 a konče 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

    Během selhání musí váš počítač vytvořit výpisy paměti, které později poslouží jako zdroj informací pro ladicí program. Proto je důležité, aby byl systém Windows nakonfigurován pro generování výpisů. Chcete-li nakonfigurovat operační systém, klepněte pravým tlačítkem myši na Váš počítač (Počítač) a vyberte Vlastnosti (Vlastnosti). Poté klikněte na záložku Advanced System Settings, na ní najděte podsekci Startup and Recovery Settings a ujistěte se, že možnost Write debugging information je nastavena na Kernel memory dump ) nebo Complete memory dump.

    Dále klikněte na Start, přejděte na Programy (Všechny programy), vyberte Debugging Tools 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:\symbols*http://msdl.microsoft.com/download/symbols

    Ten definuje cestu ke speciálním datům – takzvaným „symbolům“ (symbolům), které mohou ladicímu nástroji pomoci při identifikaci vašeho havarovaného souboru.

    Po zadání řetězce klikněte na tlačítko OK. Později při práci s debuggerem tento řádek způsobí stažení symbolů z msdl.microsoft.com a jejich uložení do složky c:\symbols.

    Vyřešte svůj problém

    Nyní počkejte na další selhání modré obrazovky 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 se program zasekl. Nicméně počkejte. Pochopte, že analýza řekněme 4GB paměti na nepříliš výkonném počítači může nějakou dobu trvat, až hodiny. Buďte proto trpěliví, ale raději nechte analýzu přes noc.

    Obvykle se však výsledek dostaví během několika minut. Důkazem toho je řádek Bugcheck Analysis, který říká něco jako "Pravděpodobně způsobeno: UACReplace.sys". Přeloženo do ruštiny to znamená, že problém je možná způsoben souborem UACReplace.sys. Zadejte jej do vyhledávacího pole, například Google, a zjistíte jeho skutečný původ. Zejména pokud patří k některému z programů, které jste nainstalovali, nebo k nainstalovanému ovladači, můžete jej jednoduše zkusit aktualizovat. Možná to vyřeší vaše problémy.

    Musím říct, že čas od času WinDbg neumí soubor vůbec pojmenovat, nebo prostě vybere jednu 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. Získáte tak podrobnější zprávu, která může obsahovat informace o možných příčinách vašich potíží.

    Pokud tentokrát nebudete mít štěstí, nezoufejte. Ladění je poměrně obtížné 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í!

    Úvod do WinDBG – část 1

    Alexandr Antipov

    WinDBG je skvělý debugger. Nemusí mít 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. Nemusí mít 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ů obsažených v této sérii:

    • Část 1 - instalace, rozhraní, symboly, vzdálené/lokální ladění, systém nápovědy, moduly, registry.
    • Část 2 - body přerušení.
    • Část 3 - kontrola paměti, ladění programu krok za krokem, tipy a triky.

    V tomto článku se podíváme na připojení a připojení k procesu a v následujících pokryjeme body přerušení, krokování a kontrolu paměti.

    Instalace WinDBG

    Ve srovnání s Windows 7 se proces instalace WinDBG ve Windows 8 mírně změnil. V této části se budeme zabývat 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ývojový balíček pro jiný počítač. Poslední jmenovaný je v podstatě ekvivalentem samostatného instalátoru, což je velmi užitečné, pokud budete chtít balíček v budoucnu nainstalovat 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ě "Debugging Tools for 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 požádáni, abyste si stáhli instalační program a poté během procesu instalace zvolili „Nástroje pro ladění systému Windows“.

    Během instalace vyberu možnost "Nástroje pro ladění" v části "Redistribuovatelné balíčky" pro vytvoření samostatného instalátoru 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 a dojem z WinDGB, uvědomíte si, že debugger je děsivě jednoduchý. Většina funkcí WinDBG se učí během ladění procesu. Namísto ztrácení času 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é se skládá ze dvou oblastí. První oblast: okno, kde se zobrazuje výsledek provádění příkazů. 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é se generují spolu 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žňují prozkoumat funkčnost 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 k aplikaci přibaleny 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 do části File:Symbol File Path a nastavte cestu na SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. Samozřejmě je trochu zvláštní, že se jako oddělovač používají hvězdičky. Po nastavení serveru Microsoft Symbol Server budou symboly staženy do složky C:\Symbols.

    Obrázek 6: Nastavení serveru Microsoft Symbol Server

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

    SRV*C:\Symbols*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 (příkazové okno se objeví, když se zapojíte do procesu). 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:\Symbols*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 je dobré znovu načíst symboly:

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

    Kontrola načtených symbolů

    Chcete-li zjistit, které moduly mají načtené symboly, můžete použít příkaz x*!. Přestože WinDBG načítá symboly pouze podle potřeby, x*! zobrazí symboly, které lze načíst. Načtení symbolů můžete vynutit pomocí příkazu ld * (to může chvíli 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ě možnosti:

    1. Připojit k již běžícímu procesu.
    2. Proces spuštění přes WinDBG.

    Každá metoda má své výhody a nevýhody. Pokud, řekněme, spustíte program přes WinDBG, pak máte k dispozici některé speciální možnosti ladění (například ladění haldy), které mohou způsobit pád aplikace. Na druhou stranu existují i ​​programy, které padnou, když k nim připojíte debugger. Některé aplikace (zejména malware) kontrolují přítomnost debuggeru v systému během spouštění, a proto má v tomto případě smysl lpět na již běžícím procesu. Někdy dochází k ladění služby Windows, která nastavuje některé parametry při spuš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 pomocí ladicího programu. Někteří lidé tvrdí, že spuštění procesu přes debugger má vážný dopad na výkon. Zkrátka vyzkoušejte obojí a vyberte si to, co vám nejvíce 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 pro vás nejpohodlnější způsob.

    Spuštění procesu není obtížné. 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é. Upozorňujeme však, že v některých případech může nalezení přesného procesu, který chcete ladit, chvíli trvat. Některé prohlížeče například vytvoří jeden nadřazený proces a poté několik dalších procesů pro každou kartu. Takže v závislosti na výpisu zhroucení, který ladíte, možná budete chtít připojit nikoli k nadřazenému procesu, ale k procesu spojenému s kartou.

    Chcete-li se připojit k již běžícímu procesu, přejděte na "File:Attach to a Process" a poté vyberte PID nebo název procesu. Pamatujte, že pro zapojení do procesu musíte mít příslušná práva.

    Obrázek 10: Výběr procesu, ke kterému se chcete 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ší zvládnout tento úkol 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 k dispozici 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ě. K vyřešení těchto problémů existují dvě nejběžnější metody.

    Stávající relace ladění

    Pokud jste již zahájili ladění programu 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č“ (listener), 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 zobrazit po spuštění příkazu k vytvoření „posluchadla“

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

    0:005> .server tcp:port=5005
    0: -vzdálený tcp:Port=5005,Server=USER-PC

    Nyní se můžete připojit ze vzdáleného hostitele k již existující relaci ladění tak, že přejdete na „File:Connect to a Remote Session“ a do textového pole zadáte 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: -vzdálený tcp:Port=5005,Server=USER-PC
    MACHINENAME\User (tcp 192.168.127.138:13334) připojeno v pondělí 16. prosince 09:03:03 2013

    a zpráva v místní verzi ladicího programu:

    MACHINENAME\User (tcp 192.168.127.138:13334) připojeno v pondělí 16. prosince 09:03:03 2013

    Vytvořte vzdálený server

    Můžete také vytvořit samostatný server 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

    A znovu můžete obdržet 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, pokud 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 zapojit do 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 informace nápovědy k 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 stačí přejít do sekce „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. Například níže jsou moduly po připojení k calc.exe:

    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:\Symbols*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\VERSION.dll
    756d0000 756dc000 CRYPTBASE C:\Windows\system32\CRYPTBASE.dll
    75920000 7596a000 KERNELBASE C:\Windows\system32\KERNELBASE.dll
    75a80000 75bdc000 ole32 C:\Windows\system32\ole32.dll
    75be0000 75bf9000 sechost C:\Windows\SYSTEM32\sechost.dll
    75c00000 75ccc000 MSCTF C:\Windows\system32\MSCTF.dll
    75cd0000 75d1e000 GDI32 C:\Windows\system32\GDI32.dll
    75e60000 75ee3000 CLBCatQ C:\Windows\system32\CLBCatQ.DLL
    75fa0000 76069000 USER32 C:\Windows\system32\USER32.dll
    76270000 762ff000 OLEAUT32 C:\Windows\system32\OLEAUT32.dll
    76300000 76357000 SHLWAPI C:\Windows\system32\SHLWAPI.dll
    76360000 76401000 RPCRT4 C:\Windows\system32\RPCRT4.dll
    76410000 77059000 SHELL32 C:\Windows\system32\SHELL32.dll
    77240000 772ec000 msvcrt C:\Windows\system32\msvcrt.dll
    774b0000 7754d000 USP10 C:\Windows\system32\USP10.dll
    77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll
    77630000 7776c000 ntdll C:\Windows\SYSTEM32\ntdll.dll
    77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
    777b0000 777ba000LPK C:\Windows\system32\LPK.dll
    777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

    Adresu ke staž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

    Informace o hlavičce obrázku konkrétního modulu můžete také získat pomocí přípony !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
    Kód velikosti C4600
    Velikost inicializovaných dat C800
    0 velikost neinicializovaných dat
    510C5 adresa vstupního bodu
    1000 základní kód
    ----- Nový -----
    77550000 imagebase
    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
    Obrázek velikosti 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ích adres
    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)
    Zadejte 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
    .přejmenovat
    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. Když se například zapojíme do calc.exe, WinDBG automaticky nastaví bod přerušení (což je jen značka používaná k zastavení aplikace). Na obrazovce se zobrazí informace o bodu zlomu:

    (da8.b44): Výjimka instrukce přerušení – 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, který nastane během provádění programu. Výjimka první šance znamená, že se program zastavil ihned po výskytu 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 ladicí program 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 zpracovat informace v těchto registrech velmi rychle. To je mnohem rychlejší než pokaždé získávat informace na sběrnici z RAM.

    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 int 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 lze získat současně z několika registrů takto:

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

    Ukazatel na pokyn

    Poslední příkaz je o spuštění instrukcí. Zde se také zobrazí 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 int 3

    zůstat v kontaktu

    V následujících článcích se podíváme na to, jak používat WinDBG v boji: body přerušení, krokové ladění a prohlížení paměti. Nepřepínejte! J.

    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 pro ladění‘ v části ‚Obecné nástroje‘

    Výše uvedený balíček nainstaluje verzi windbg 6.12. Pokud chcete rychle nainstalovat windbg, můžete přejít na 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