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:
- Připojit k již běžícímu procesu.
- 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:
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:
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