Inštalácia a konfigurácia WinDBG na analýzu výpisov pamäte. Inštalácia ladiacich nástrojov pre Windows Nakonfigurujte svoj systém

22. júna 2010

Predtým bol Windbg k dispozícii na stiahnutie samostatne. Pre najnovšie verzie ho však Microsoft ponecháva ako súčasť Windows SDK. Nižšie nájdete odkazy na stiahnutie.

Windows 10

Najnovšiu verziu Windbg pre Windows 7 si môžete stiahnuť z odkazu https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

Windows 7

Stiahnite si inštalačné programy z vyššie uvedených odkazov. Upozorňujeme, že týmto sa nestiahne celá súprava SDK, je to len inštalátor. akonáhle spustíte súbor, môžeš vyberte, ktoré nástroje chcete stiahnuť. Ak máte záujem iba o Windbg, môžete vylúčiť všetko ostatné a vybrať iba „Nástroje na ladenie“ v časti „Spoločné nástroje“

Vyššie uvedený balík nainštaluje verziu windbg 6.12. Ak chcete rýchlo nainštalovať windbg, môžete použiť staršiu verziu (6.11), ktorú si môžete stiahnuť z
link uvedený na konci tohto príspevku.

Po dokončení inštalácie nájdete program v ponuke Štart -> Všetky programy -> Nástroje na ladenie pre Windows -> Windbg

Úvod do WinDBG – 1. časť

Alexander Antipov

WinDBG je skvelý debugger. Nemusí mať príliš užívateľsky prívetivé rozhranie a v predvolenom nastavení nemá čierne pozadie, ale v súčasnosti je to jeden z najvýkonnejších a najstabilnejších debuggerov v systéme Windows. V tomto článku vás prevediem základmi WinDBG, aby ste s ním mohli začať.


WinDBG je skvelý debugger. Nemusí mať príliš užívateľsky prívetivé rozhranie a v predvolenom nastavení nemá čierne pozadie, ale v súčasnosti je to jeden z najvýkonnejších a najstabilnejších debuggerov v systéme Windows. V tomto článku vás prevediem základmi WinDBG, aby ste s ním mohli začať.

Toto je prvý článok zo série o WinDBG. Zoznam všetkých článkov v tejto sérii:

  • Časť 1 - inštalácia, rozhranie, symboly, vzdialené/lokálne ladenie, systém pomoci, moduly, registre.
  • 2. časť - body zlomu.
  • 3. časť - kontrola pamäte, ladenie programu krok za krokom, tipy a triky.

V tomto článku sa pozrieme na pripojenie a pripojenie k procesu a v nasledujúcich sa budeme zaoberať bodmi prerušenia, krokovaním a kontrolou pamäte.

Inštalácia WinDBG

V porovnaní so systémom Windows 7 prešiel procesom inštalácie WinDBG v systéme Windows 8 malé zmeny. V tejto časti sa pozrieme na inštaláciu debuggera pre obe operačné systémy.

Inštalácia WinDBG v systéme Windows 8

V systéme Windows 8 je WinDBG súčasťou Windows Driver Kit (WDK). Môžete nainštalovať Visual Studio a WDK alebo samostatne nainštalovať balík Debugging Tools pre Windows 8.1, ktorý obsahuje WinDBG.

Inštalátor sa vás opýta, či chcete WinDBG nainštalovať lokálne alebo stiahnuť celý vývojový balík pre iný počítač. To posledné je v podstate ekvivalent offline inštalátor, čo je veľmi praktické, ak si budete chcieť balík v budúcnosti nainštalovať na iné systémy.

Obrázok 1: Výber typu inštalácie

V ďalšom okne musíte zrušiť začiarknutie všetkých položiek okrem "Nástroje na ladenie pre Windows" a kliknúť na tlačidlo "Stiahnuť".

Keď inštalátor dokončí svoju prácu, prejdite do adresára, do ktorého bol balík stiahnutý (v predvolenom nastavení je to c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK) a prejdite inštalačným postupom.

Inštalácia WinDBG v systéme Windows 7 a starších verziách

Pre Windows 7 a staršie verzie je WinDBG súčasťou balíka "Debugging Tools for Windows", ktorý je súčasťou Windows SDK a .Net Framework. Budete musieť stiahnuť inštalačný program a potom počas procesu inštalácie vybrať "Nástroje na ladenie pre Windows".

Počas inštalácie vyberiem možnosť „Nástroje na ladenie“ v časti „Redistribuovateľné balíčky“, aby som vytvoril samostatný inštalačný program, ktorý uľahčí následné inštalácie.

Obrázok 2: Výber možností inštalácie na vytvorenie samostatného inštalátora

Po dokončení inštalácie by ste mali mať inštalačné programy WinDBG pre rôzne platformy (v adresári c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\).

Obrázok 3: Priečinok s inštalačnými programami WinDBG pre rôzne platformy

Rozhranie WinDBG

Obrázok 4: Vzhľad WinDBG

Hneď ako prvýkrát uvidíte vzhľad WinDGB, uvedomíte si, že debugger je desivo jednoduchý. Väčšina funkcií WinDBG sa učí počas ladenia procesov. Namiesto plytvania časom popisovaním rozhrania sa v nasledujúcich častiach budeme venovať len najdôležitejším bodom.

Najzákladnejšia vec, ktorú potrebujete vedieť o rozhraní debuggera, je príkazové okno, ktoré pozostáva z dvoch oblastí. Prvá oblasť: okno, kde sa zobrazuje výsledok vykonania príkazov. Druhá oblasť: malé textové pole na zadávanie príkazov.

Obrázok 5: Príkazové okno WinDBG

Symboly

Vo väčšine prípadov WinDBG nevyžaduje žiadne špeciálne nastavenia a funguje správne hneď po vybalení. Ale jedna dôležitá vec, ktorú treba doladiť, sú symboly. Symboly sú súbory, ktoré sa generujú spolu so spustiteľným súborom počas kompilácie programu a obsahujú ladiace informácie (funkcie a názvy premenných). Informácie o ladení vám umožňujú preskúmať funkčnosť aplikácie počas ladenia alebo rozoberania. Mnoho komponentov spoločnosti Microsoft je zostavených so symbolmi, ktoré sú distribuované prostredníctvom servera Microsoft Symbol Server. So zvyškom spustiteľných súborov nie je všetko také ružové - veľmi zriedkavo sú k aplikácii pribalené súbory s informáciami o ladení. Vo väčšine prípadov spoločnosti obmedzujú prístup k takýmto informáciám.

Ak chcete nakonfigurovať WinDBG pre Použitie Microsoft Symbol Server prejdite na File:Symbol File Path a nastavte cestu na SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. Samozrejme, je trochu zvláštne, že sa ako oddeľovač používajú hviezdičky. Po nastavení servera Microsoft Symbol Server sa symboly stiahnu do priečinka C:\Symbols.

Obrázok 6: Nastavenie Microsoftu Server symbolov

WinDBG automaticky načíta symboly pre binárne súbory keď je to potrebné. Môžete tiež pridať svoj vlastný priečinok so symbolmi, napríklad:

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

Pridávanie symbolov počas ladenia

Ak potrebujete importovať symboly počas ladenia, môžete tak urobiť pomocou .sympath (príkazové okno sa objaví, keď sa zapojíte do procesu). Ak chcete napríklad pridať priečinok c:\SomeOtherSymbolFolder, zadajte nasledujúci príkaz:

0:025> .sympath+ c:\SomeOtherSymbolFolder
Cesta vyhľadávania symbolov je: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
Cesta rozšíreného vyhľadávania symbolov je: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

Po pridaní alebo zmene ciest je dobré znova načítať symboly:

0:025> .znova načítať
Opätovné načítanie aktuálnych modulov
................................................................
...............................................

Kontrola načítaných symbolov

Ak chcete zistiť, ktoré moduly majú načítané symboly, môžete použiť príkaz x*!. Hoci WinDBG načítava symboly iba podľa potreby, x*! zobrazí symboly, ktoré je možné načítať. Môžete vynútiť načítanie symbolov pomocou príkazu ld * (môže to chvíľu trvať a tento proces môžete zastaviť prechodom na Debug:Break).

Teraz môžeme vidieť symboly pre každý modul.

Obrázok 8: Zoznam symbolov

Ladenie lokálneho procesu

Pri ladení lokálneho procesu máte dve možnosti:

  1. Pripojte k už spustenému procesu.
  2. Proces spustenia cez WinDBG.

Každá metóda má svoje výhody a nevýhody. Ak povedzme spustíte program cez WinDBG, potom máte k dispozícii niektoré špeciálne možnosti ladenia (napríklad ladenie haldy), ktoré môžu spôsobiť zlyhanie aplikácie. Na druhej strane existujú aj programy, ktoré sa zrútia, keď k nim pripojíte debugger. Niektoré aplikácie (najmä malvér) kontrolujú prítomnosť debuggera v systéme počas spúšťania, a preto má v tomto prípade zmysel držať sa už spusteného procesu. Niekedy dochádza k ladeniu služby Windows, ktorá nastavuje niektoré parametre pri spustení, takže na zjednodušenie procesu ladenia je tiež lepšie pripojiť sa k bežiacemu procesu, ako spustiť službu pomocou debuggera. Niektorí ľudia tvrdia, že spustenie procesu cez debugger má vážny vplyv na výkon. Skrátka vyskúšajte oboje a vyberte si, čo vám najviac vyhovuje. Ak z nejakého dôvodu uprednostňujete konkrétnu metódu, podeľte sa o svoje myšlienky v komentároch!

Spustenie procesu

Ak ladíte samostatnú aplikáciu, ktorá beží lokálne a nie je pripojená k sieti, možno ju budete chcieť spustiť cez WinDBG. To však neznamená, že sa nemôžete pripojiť k už spustenému procesu. Vyberte si pre vás najpohodlnejší spôsob.

Spustenie procesu nie je ťažké. Prejdite na "File: Open Executable" a vyberte spustiteľný súbor, ktorý chcete ladiť. Môžete tiež zadať argumenty alebo nastaviť štartovací adresár:

Obrázok 9: Výber spustiteľného súboru na ladenie

Procesné pripojenie

Pripojenie k už spustenému procesu tiež nie je zložité. Upozorňujeme však, že v niektorých prípadoch môže chvíľu trvať, kým nájdete presný proces, ktorý chcete ladiť. Niektoré prehliadače napríklad vytvoria jeden nadradený proces a potom niekoľko ďalších procesov pre každú kartu. Takže v závislosti od výpisu zrútenia, ktorý ladíte, možno budete chcieť pripojiť nie k rodičovskému procesu, ale k procesu spojenému s kartou.

Ak sa chcete pripojiť k už spustenému procesu, prejdite na „Súbor: Pripojiť k procesu“ a potom vyberte PID alebo názov procesu. Nezabudnite, že na zapojenie do procesu musíte mať príslušné práva.

Obrázok 10: Výber procesu na pripojenie

Ak po pripojení aplikácia pozastavila svoju prácu, začiarknutím príslušného políčka môžete použiť režim „Noninvaise“.

Ladenie vzdialeného procesu

Niekedy možno budete musieť ladiť proces na vzdialenom systéme. Bolo by oveľa pohodlnejšie zvládnuť túto úlohu pomocou lokálneho debuggera namiesto použitia virtuálneho počítača alebo RDP. Alebo možno ladíte proces LoginUI.exe, ktorý je k dispozícii iba vtedy, keď je systém uzamknutý. V situáciách, ako je táto, môžete použiť lokálnu verziu WinDBG a pripojiť sa k procesom na diaľku. Na vyriešenie týchto problémov existujú dva najbežnejšie spôsoby.

Existujúce relácie ladenia

Ak ste už začali s ladením programu lokálne (pripojením alebo spustením procesu cez WinDBG), potom môžete zadať špecifický príkaz a WinDBG spustí „poslucháč“ (poslucháč), ku ktorému sa môže vzdialený debugger pripojiť. Ak to chcete urobiť, použite príkaz .server:

Server tcp:port=5005

Po spustení vyššie uvedeného príkazu sa môže zobraziť varovanie, ako je toto:

Obrázok 11: Výstražné hlásenie, ktoré sa môže zobraziť po spustení príkazu na vytvorenie „poslucháča“

Potom WinDBG oznámi, že server beží:

0:005> .server tcp:port=5005
0: -vzdialený tcp:Port=5005,Server=POUŽÍVATEĽ-PC

Teraz sa môžete pripojiť zo vzdialeného hostiteľa k už existujúcej relácii ladenia tak, že prejdete na „File:Connect to a Remote Session“ a do textového poľa zadáte niečo takéto: tcp:Port=5005,Server=192.168.127.138

Obrázok 12: Vzdialené pripojenie do relácie ladenia

Po pripojení dostanete potvrdenie na vzdialenom klientovi:


server spustený. Klient sa môže spojiť s ktorýmkoľvek z týchto príkazových riadkov
0: -vzdialený tcp:Port=5005,Server=POUŽÍVATEĽ-PC
MACHINENAME\User (tcp 192.168.127.138:13334) pripojený v pondelok 16. decembra 09:03:03 2013

a správa v lokálnej verzii ladiaceho nástroja:

MACHINENAME\User (tcp 192.168.127.138:13334) pripojený v pondelok 16. decembra 09:03:03 2013

Vytvorte vzdialený server

Môžete tiež vytvoriť samostatný server WinDBG, pripojiť sa k nemu na diaľku a vybrať proces na ladenie. Môžete to urobiť pomocou súboru dbgsrv.exe, v ktorom plánujete ladiť procesy. Ak chcete spustiť takýto server, spustite nasledujúci príkaz:

dbgsrv.exe -t tcp:port=5005

Obrázok 13: Spustenie vzdialeného servera

A znova sa vám môže zobraziť bezpečnostné upozornenie, ktoré by ste mali prijať:

Obrázok 14: Bezpečnostná správa, ktorá sa môže zobraziť počas spúšťania ladiaceho servera

K serveru ladenia sa môžete pripojiť, ak prejdete do súboru „Súbor: Pripojiť k vzdialenému stub“ a do textového poľa zadáte nasledujúci riadok: tcp:Port=5005,Server=192.168.127.138

Obrázok 15: Pripojenie k ladiacemu serveru

Po pripojení nedostanete žiadne signály, že ste sa pripojili, ale ak prejdete na "File:Attach to a Process", uvidíte zoznam procesov ladiaceho servera (kde beží dbgsrv.exe). Teraz sa môžete zapojiť do procesu, ako keby ste to robili lokálne.

Systém pomoci

Systém pomoci vo WinDBG je skvelý. Okrem toho, že sa niečo nové naučíte, mali by ste vedieť aj prijímať informácie o pozadí o akomkoľvek tíme. Na prístup k pomocníkovi WinDBG použite príkaz .hh:

Môžete tiež získať pomoc konkrétny tím. Ak chcete napríklad získať pomoc s príkazom .reload, použite nasledujúci príkaz:

windbg> .hh .znova načítať

Alebo jednoducho prejdite do časti „Pomocník:Obsah“.

Moduly

Počas behu programu sa importujú rôzne moduly, ktoré poskytujú funkčnosť aplikácie. Preto, ak viete, ktoré moduly aplikácia importuje, môžete lepšie pochopiť, ako funguje. V mnohých prípadoch budete ladiť konkrétny modul načítaný programom, nie samotný spustiteľný súbor.

Po pripojení k procesu WinDBG automaticky zobrazí načítané moduly. Napríklad nižšie sú moduly po pripojení k calc.exe:

Microsoft (R) Windows Debugger, verzia 6.12.0002.633 X86
Autorské práva (c) Microsoft Corporation. Všetky práva vyhradené.

*** počkajte s čakajúcou prílohou
Cesta vyhľadávania symbolov je: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
Spustiteľná vyhľadávacia 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

Neskôr v procese ladenia môžete tento zoznam znova zobraziť pomocou príkazu lmf:

0:005>lmf
začiatok a názov 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 VERZIA 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 sťahovania konkrétneho modulu môžete zistiť aj pomocou príkazu "lmf m":

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

Informácie o hlavičke obrázka konkrétneho modulu môžete získať aj pomocou rozšírenia !dh (výkričník označuje rozšírenie):

0:005> !dh kernel32

Typ súboru: DLL
HODNOTY HLAVIČKY SÚBORU
14C stroj (i386)
4 počet sekcií
4A5BDAAD časová dátumová pečiatka Po 13. júl 21:09:01 2009

0 ukazovateľ súboru na tabuľku symbolov
0 počet symbolov
Veľkosť E0 voliteľnej hlavičky
2102 charakteristiky
Spustiteľný súbor
32-bitový slovný stroj
DLL

VOLITEĽNÉ HODNOTY HLAVIČKY
10B magic#
Verzia linkera 9.00
Kód veľkosti C4600
Veľkosť inicializovaných údajov C800
0 veľkosť neinicializovaných údajov
510C5 adresa vstupného bodu
1000 základný kód
----- Nový -----
77550000 obrazová základňa
Zarovnanie 1000 sekcií
200 zarovnanie súborov
3 podsystém (Windows CUI)
Verzia operačného systému 6.01
Verzia obrázka 6.01
Verzia podsystému 6.01
Obrázok veľkosti D4000
Veľkosť hlavičiek 800
Kontrolný súčet D5597
00040000 veľkosť rezervy zásobníka
00001000 veľkosť potvrdenia zásobníka
00100000 veľkosť haldovej rezervy
00001000 veľkosť potvrdenia haldy
140 DLL charakteristík
dynamická základňa
Kompatibilné s NX
B4DA8 [A915] adresa exportného adresára
BF6C0 [ 1F4] adresa importného adresára
C7000 [ 520] adresa adresára zdrojov
0 [ 0] adresa adresára výnimiek
0 [ 0] adresa bezpečnostného adresára
C8000 [B098] adresa adresára premiestnenia základne
C5460 [ 38] adresa adresára ladenia
0 [ 0] adresa popisného adresára
0 [ 0] adresa špeciálneho adresára
0 [ 0] adresa adresára ukladania vlákien
816B8 [ 40] adresa Load Configuration Directory
278 [ 408] adresa adresára viazaného importu
1000 [DE8] adresa importného adresára tabuľky adries
0 [ 0] adresa adresára oneskoreného importu
0 [ 0] adresa adresára hlavičiek COR20
0 [ 0] adresa rezervovaného adresára

HLAVA SEKCIE #1
.textový názov
Virtuálna veľkosť C44C1
1000 virtuálnych adries
Veľkosť nespracovaných údajov C4600
800 ukazovateľ súboru na nespracované údaje

0 počet premiestnení
0 počet čísel riadkov
60000020 vlajok
kód
(nie je určené zarovnanie)
Spustiť Čítať

Ladiť adresáre(2)
Typ Veľkosť Ukazovateľ adresy
cv 25 c549c c4c9c Formát: RSDS, guid, 2, kernel32.pdb
(10) 4 c5498 c4c98

HLAVA SEKCIE #2
.názov údajov
Virtuálna veľkosť FEC
Virtuálna adresa C6000
E00 veľkosť nespracovaných údajov
Ukazovateľ súboru C4E00 na nespracované údaje
0 ukazovateľ súboru na tabuľku premiestnenia
0 ukazovateľ súboru na čísla riadkov
0 počet premiestnení
0 počet čísel riadkov
C0000040 vlajky
inicializované údaje
(nie je určené zarovnanie)
Čítaj píš

HLAVA SEKCIE #3
Názov .rsrc
virtuálna veľkosť 520
Virtuálna adresa C7000
600 veľkosť nespracovaných údajov
Ukazovateľ súboru C5C00 na nespracované údaje
0 ukazovateľ súboru na tabuľku premiestnenia
0 ukazovateľ súboru na čísla riadkov
0 počet premiestnení
0 počet čísel riadkov
40000040 vlajok
inicializované údaje
(nie je určené zarovnanie)
Iba na čítanie

HLAVA SEKCIE #4
.relocname
virtuálna veľkosť B098
Virtuálna adresa C8000
Veľkosť nespracovaných údajov B200
Ukazovateľ súboru C6200 na nespracované údaje
0 ukazovateľ súboru na tabuľku premiestnenia
0 ukazovateľ súboru na čísla riadkov
0 počet premiestnení
0 počet čísel riadkov
42000040 vlajok
inicializované údaje
Vyraditeľné
(nie je určené zarovnanie)
Iba na čítanie

Správy a výnimky

Po pripojení k procesu sa najskôr zobrazí zoznam modulov a potom sa môžu objaviť ďalšie správy. Napríklad, keď sa zapojíme do calc.exe, WinDBG automaticky nastaví bod prerušenia (čo je len značka používaná na zastavenie aplikácie). Na obrazovke sa zobrazia informácie o bode zlomu:

(da8.b44): Výnimka prerušenia inštrukcie - kód 80000003 (prvá šanca)

Táto konkrétna správa je výnimkou, konkrétne výnimkou prvej šance. Výnimka je v podstate špeciálna podmienka, ktorá sa vyskytuje počas vykonávania programu. Výnimka prvej šance znamená, že program sa zastavil ihneď po výskyte výnimky. Výnimka druhej šance znamená, že po výskyte výnimky sa vykonajú niektoré operácie a potom program zastaví svoju prácu.

Registre

Po zobrazení správ a výnimiek ladiaci program zobrazí stav registrov procesora. Registre sú špeciálne premenné v procesore, ktoré ukladajú malé časti informácií alebo sledujú stav niečoho v pamäti. Procesor dokáže spracovať informácie v týchto registroch veľmi rýchlo. Je to oveľa rýchlejšie ako získavanie informácií na zbernici z RAM zakaždým.

Po pripojení k calc.exe WinDBG automaticky zobrazí informácie o nasledujúcich registroch:

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

Neskôr môžete tieto informácie znova duplikovať pomocou prí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

Ak chceme získať hodnotu konkrétneho registra, môžeme vykonať nasledujúci príkaz:

0:005> r eax
eax=7ffd9000

Informácie možno získať súčasne z niekoľkých registrov takto:

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

Ukazovateľ na pokyn

Posledný príkaz je o spustení inštrukcií. Tu sa tiež zobrazuje informácia, ako v prípade príkazu r, čo obsahuje register EIP. EIP je register obsahujúci umiestnenie ďalší pokyn ktoré má vykonať procesor. To, čo zobrazí WinDBG, je ekvivalentom príkazu u eip L1, po ktorom WinDBG prejde na adresu zadanú v registri EIP, skonvertuje túto časť na kód zostavy a zobrazí ju na obrazovke.

ntdll!DbgBreakPoint:
77663540 ccm int 3

zostať v kontakte

V nasledujúcich článkoch sa pozrieme na to, ako používať WinDBG v boji: body prerušenia, krokové ladenie a prezeranie pamäte. Neprepínajte sa! J.

Tieto typy porúch sú zvyčajne spojené s chybným ovládačom, ktorý môže byť ťažké presne určiť. Avšak vylepšený systém sledovania chýb v Windows Vista(a nielen vo Windows Vista!) vás môže často priviesť k problematickému súboru. Výsledkom je, že väčšina ľudí sa prestane horúčkovito snažiť pracovať na nestabilnom počítači, ukladať dokumenty s paranoidnou pravidelnosťou a dúfať v to najlepšie.

Keď Windows zlyhá, zvyčajne sa vytvorí takzvaný „výpis pamäte“. Ten možno preskúmať pomocou bezplatného nástroja na ladenie Ladenie systému Windows Nástroje, ktoré vás môžu nasmerovať k zdroju problému. Preto všetko, čo musíte urobiť, je:

Stiahnite si nástroj na ladenie

Nástroje na ladenie systému Windows si môžete stiahnuť priamo z webovej lokality spoločnosti Microsoft. Program funguje s mnohými operačnými systémami, počnúc Windows NT 4 a končiac Windows 2008, takže by ste s ním nemali mať žiadne problémy. Áno, nedá sa povedať, že by bol stabilný pod Windows 7 RC, no podľa našich testov stále funguje. Preto môže byť úspešný aj pokus o diagnostiku problému pod Windows 7 RC.

Nakonfigurujte si systém

Počas zlyhaní musí váš počítač vytvoriť výpisy pamäte, ktoré budú neskôr slúžiť ako zdroj informácií pre ladiaci program. Preto je dôležité, aby bol systém Windows nakonfigurovaný na vytváranie výpisov. Ak chcete prispôsobiť svoj operačný systém, kliknite na kliknite pravým tlačidlom myši myšou nad počítač a vyberte položku Vlastnosti. Potom kliknite na kartu Rozšírené nastavenia systému, nájdite na nej podsekciu Nastavenia spustenia a obnovy a skontrolujte, či je možnosť Zapisovať informácie o ladení nastavená na Výpis pamäte jadra ) alebo Úplný výpis z pamäte.

Ďalej kliknite na Štart, prejdite na Programy (Všetky programy), vyberte Nástroje na ladenie a spustite WinDbg. V programe prejdite do ponuky Súbor a vyberte Cesta k súboru symbolov ... Potom do okna, ktoré sa otvorí, napíšte nasledujúci riadok:

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

Ten definuje cestu k špeciálnym údajom – takzvaným „symbolom“ (symbolom), ktoré môžu pomôcť ladiacemu nástroju pri identifikácii vášho havarovaného súboru.

Po zadaní reťazca kliknite na tlačidlo OK. Neskôr, pri práci s debuggerom, tento riadok spôsobí stiahnutie symbolov z msdl.microsoft.com a ich uloženie do priečinka c:\symbols.

Vyriešte svoj problém

Teraz počkajte na ďalšie zlyhanie modrej obrazovky a následné dokončenie reštartovania počítača. Potom znova spustite WinDbg (používatelia systému Vista musia spustiť program ako správca), kliknite na ponuku Súbor, vyberte položku Otvoriť výpis zlyhania, otvorte súbor \Windows\MEMORY.DMP a program ho okamžite začne analyzovať.

Bohužiaľ, WinDbg poskytuje veľmi málo informácií o tom, čo robí, takže si môžete dokonca myslieť, že sa program zasekol. Však počkajte. Pochopte, že analýza povedzme 4 GB pamäte na nie príliš výkonnom počítači môže trvať nejaký čas, až hodiny. Buďte preto trpezliví, ale analýzu nechajte radšej cez noc.

Výsledok sa však zvyčajne dostaví v priebehu niekoľkých minút. Dôkazom toho je riadok Bugcheck Analysis, ktorý hovorí niečo ako "Pravdepodobne spôsobené: UACReplace.sys". Preložené do ruštiny to znamená, že problém je pravdepodobne spôsobený súborom UACReplace.sys. Zadajte ho do vyhľadávacieho panela, napríklad Google, a zistíte jeho skutočný pôvod. Najmä, ak patrí k niektorému z programov, ktoré ste nainštalovali, resp nainštalovaný ovládač, potom sa ho môžete pokúsiť aktualizovať. Možno to vyrieši vaše problémy.

Treba povedať, že z času na čas WinDbg nedokáže pomenovať súbor vôbec, alebo jednoducho vyberie jeden z nich Windows DLL. Ak sa vám to stalo, kliknite na príkazové okno nad stavovým riadkom a zadajte príkaz:

Potom stlačte Enter. Získate tak podrobnejšiu správu, ktorá môže obsahovať informácie o možné dôvody tvoje trápenia.

Ak tentoraz nebudete mať šťastie, nezúfajte. Ladenie je dosť ťažké, dokonca aj pre odborníkov. Stačí teda zavrieť WinDbg a spustiť analyzátor znova po ďalšom páde. Možno vám to poskytne ďalšie informácie. Veľa štastia!

V čase kritického zlyhania operačný systém Windows prestane fungovať a zobrazí sa modrá obrazovka smrť (BSOD). Obsah Náhodný vstup do pamäťe a všetky informácie o chybe, ktorá sa vyskytla, sa zapíšu do stránkovacieho súboru. Pri ďalšom spustení systému Windows sa vytvorí výpis zlyhaní s informáciami o ladení na základe uložených údajov. V protokole systémových udalostí sa vytvorí záznam závažnej chyby.

Pozor! V prípade zlyhania sa nevygeneruje výpis zlyhaní diskový subsystém alebo sa vyskytla kritická chyba v počiatočnej fáze načítania systému Windows.

Typy výpisov pri zlyhaní systému Windows

Na príklade aktuálneho operačného systému Windows 10 ( Windows Server 2016) zvážte hlavné typy výpisov pamäte, ktoré môže systém vytvoriť:

  • Mini výpis pamäte (malý výpis pamäte)(256 kB). Tento typ súboru obsahuje minimálne množstvo informácií. Obsahuje iba správu o Chyba BSOD, informácie o ovládačoch, procesoch, ktoré boli aktívne v čase zlyhania a ktorý proces alebo vlákno jadra spôsobilo zlyhanie.
  • Výpis pamäte jadra. Spravidla malá veľkosť - jedna tretina objemu fyzická pamäť. Výpis pamäte jadra je podrobnejší ako minidump. Obsahuje informácie o ovládačoch a programoch v režime jadra, zahŕňa pamäť pridelenú jadru Windows a vrstvu hardvérovej abstrakcie (HAL) a pamäť pridelenú ovládačom a iným programom v režime jadra.
  • Úplný výpis pamäte. Najväčšia veľkosť a vyžaduje pamäť rovnajúcu sa RAM vášho systému plus 1 MB, ktorú vyžaduje systém Windows na vytvorenie tohto súboru.
  • Automatický výpis pamäte. Pokiaľ ide o informácie, zodpovedá výpisu pamäte jadra. Líši sa len tým, koľko miesta využíva na vytvorenie súboru výpisu. Tento typ súboru v systéme Windows 7 neexistoval. Bol pridaný v systéme Windows 8.
  • Aktívny výpis pamäte. Tento typ odfiltruje prvky, ktoré nedokážu určiť príčinu zlyhania systému. Toto bolo pridané v systéme Windows 10 a je obzvlášť užitočné, ak používate virtuálny počítač alebo ak je váš systém hostiteľom Hyper-V.

Ako povoliť generovanie výpisu pamäte v systéme Windows?

Pomocou Win + Pause otvorte okno nastavení systému, vyberte " Ďalšie systémové nastavenia" (Rozšírené nastavenia systému). Na karte " Okrem toho" (Rozšírené), sekcia "" (Spustenie a obnovenie), kliknite na tlačidlo " možnosti" (Nastavenie). V okne, ktoré sa otvorí, nakonfigurujte akcie v prípade zlyhania systému. Začiarknite políčko " Zapisujte udalosti do systémového denníka» (Zapíšte udalosť do systémového denníka), vyberte typ výpisu, ktorý sa má vygenerovať pri zlyhaní systému. Ak je začiarkavacie políčko " Nahradiť existujúci súbor výpisu» (Prepísať akýkoľvek existujúci súbor) začiarknite políčko, súbor sa prepíše pri každom páde. Je lepšie zrušiť začiarknutie tohto políčka, potom budete mať viac informácií na analýzu. Zakázať aj automatický reštart systému (Automaticky reštartovať).

Vo väčšine prípadov bude na analýzu príčiny BSOD stačiť malý výpis pamäte.

Teraz, ak sa vyskytne BSOD, môžete analyzovať súbor výpisu a nájsť príčinu porúch. Minidump je štandardne uložený v priečinku %systemroot%\minidump. Na analýzu súboru výpisu odporúčam použiť program WinDBG(Microsoft Kernel Debugger).

Inštalácia WinDBG na Windows

Utility WinDBG zahrnuté v " Windows 10 SDK» (Windows 10 SDK). .

Súbor sa volá winsdksetup.exe, veľkosť 1,3 MB.

Spustite inštaláciu a vyberte, či chcete balík nainštalovať na tento počítač alebo si ho stiahnuť na inštaláciu na iné počítače. Nainštalujte balík na lokálny počítač.

Môžete nainštalovať celý balík, ale na inštaláciu iba nástroja na ladenie vyberte Nástroje na ladenie pre Windows.

Po nainštalovaní nájdete skratky WinDBG v ponuke Štart.

Nastavenie asociácie súborov .dmp s WinDBG

Ak chcete otvoriť súbory výpisu jednoduchým kliknutím, namapujte príponu .dmp na pomôcku WinDBG.

  1. Otvorte príkazový riadok ako správca a spustite príkazy pre 64-bitový systém: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe –IA
    pre 32-bitový systém:
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. V dôsledku toho budú typy súborov: .DMP, .HDMP, .MDMP, .KDMP, .WEW mapované na WinDBG.

Nastavenie servera symbolov ladenia vo WinDBG

Symboly ladenia (symboly ladenia alebo súbory symbolov) sú dátové bloky generované v procese kompilácie programu spolu so spustiteľným súborom. Takéto dátové bloky obsahujú informácie o názvoch premenných, nazývaných funkciách, knižniciach atď. Tieto údaje nie sú potrebné pri spustení programu, ale užitočné pri jeho ladení. Komponenty spoločnosti Microsoft sú zostavené so symbolmi distribuovanými prostredníctvom servera Microsoft Symbol Server.

Nastavte WinDBG na používanie Microsoft Symbol Server:

  • Otvorte WinDBG;
  • Prejdite do ponuky súbor –> cesta k súboru symbolov;
  • Napíšte reťazec obsahujúci adresu URL na stiahnutie symbolov ladenia z webovej lokality spoločnosti Microsoft a priečinok na uloženie vyrovnávacej pamäte: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols V príklade sa stiahne vyrovnávacia pamäť do priečinka E:\Sym_WinDBG, môžete zadať ľubovoľné.
  • Nezabudnite uložiť zmeny v ponuke súbor–>Uložiť pracovný priestor;

WinDBG vyhľadá symboly v lokálnom priečinku a ak v ňom nenájde potrebné symboly, automaticky stiahne symboly zo zadanej stránky. Ak chcete pridať svoj vlastný priečinok so symbolmi, môžete to urobiť takto:

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

Ak nie je k dispozícii internetové pripojenie, najskôr si stiahnite balík symbolov zo zdroja balíkov symbolov systému Windows.

Analýza výpisu zrútenia vo WinDBG

Ladiaci program WinDBG otvorí súbor výpisu a stiahne potrebné symboly na ladenie z lokálneho priečinka alebo z internetu. Počas tohto procesu nemôžete používať WinDBG. V spodnej časti okna (v príkazovom riadku ladiaceho programu) sa zobrazí nápis Debugee nie je pripojený.

Príkazy sa zadávajú do príkazového riadku v spodnej časti okna.

Najdôležitejšou vecou, ​​​​ktorú treba venovať pozornosť, je kód chyby, ktorý je vždy uvedený v hexadecimálnu hodnotu a vyzerá ako 0xXXXXXXXXX(uvedené v jednej z možností - STOP:, 7.2.2019 0008F, 0x8F). V našom príklade je kód chyby 0x139.

Ladiaci nástroj vás vyzve na vykonanie príkazu!analyza -v, stačí umiestniť kurzor myši na odkaz a kliknúť. Na čo slúži tento príkaz?

  • Vykonáva predbežnú analýzu výpisu pamäte a poskytuje detailné informácie na spustenie analýzy.
  • Tento príkaz zobrazí kód STOP a symbolický názov chyby.
  • Zobrazuje zásobník volaní príkazov, ktoré viedli k zlyhaniu.
  • Okrem toho sa tu zobrazujú chyby IP adresy, procesov a registrov.
  • Tím môže poskytnúť hotové odporúčania na riešenie problému.

Hlavné body, ktorým by ste mali venovať pozornosť pri analýze po vykonaní príkazu !analyze -v (výpis nie je úplný).

1: kd> !analyzovať -v


* *
*Analýza kontroly chýb*
* *
*****************************************************************************
Symbolický názov chyby STOP (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Popis chyby (Komponent jadra poškodil kritickú dátovú štruktúru. Toto poškodenie môže potenciálne umožniť útočníkovi prevziať kontrolu nad týmto počítačom):

Komponent jadra poškodil kritickú dátovú štruktúru. Poškodenie by mohlo potenciálne umožniť používateľovi so zlými úmyslami získať kontrolu nad týmto počítačom.
Argumenty chyby:

Argumenty:
Arg1: 0000000000000003, položka LIST_ENTRY bola poškodená (t. j. dvojité odstránenie).
Arg2: ffffd0003a20d5d0, adresa rámca pasce pre výnimku, ktorá spôsobila kontrolu chýb
Arg3: ffffd0003a20d528, adresa záznamu výnimky pre výnimku, ktorá spôsobila kontrolu chýb
Arg4: 0000000000000000, rezervované
Podrobnosti ladenia:
------------------

Počítadlo ukazuje, koľkokrát systém zlyhal s podobnou chybou:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

Kód chyby STOP v skrátenom formáte:

BUGCHECK_STR: 0x139

Proces, ktorý zlyhal (nie nevyhnutne príčinou chyby, len tento proces bežal v pamäti v čase zlyhania):

PROCESS_NAME: sqlservr.exe

Dešifrovanie kódu chyby: Systém v tejto aplikácii zistil pretečenie vyrovnávacej pamäte zásobníka, čo môže útočníkovi umožniť prevziať kontrolu nad touto aplikáciou.

ERROR_CODE: (NTSTATUS) 0xc0000409 - Systém zistil v tejto aplikácii prekročenie vyrovnávacej pamäte založenej na zásobníku. Toto prekročenie by mohlo potenciálne umožniť používateľovi so zlými úmyslami získať kontrolu nad touto aplikáciou.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - Systém v tejto aplikácii zistil prekročenie vyrovnávacej pamäte založenej na zásobníku. Toto prekročenie by mohlo potenciálne umožniť používateľovi so zlými úmyslami získať kontrolu nad touto aplikáciou.

Posledný call na stacku:

LAST_CONTROL_TRANSFER: z ffff8040117d6a9 na ffff8040116b0a0

Zásobník hovorov v čase zlyhania:

STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`8e:nta20d005CheckK3a20d
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2Ki6BugCheck nt!
ffffd000`3a20d3f0 ffffff804`0117c150: 00000000`00000000 00000000`00000000 00000000 00000000`00000000`00000000`00000000 00000000 0000000000
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000xF3KiR9:Chaeck3006KiR9
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951 ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 ffff804`013a34ac: 00000000`00000004 00000000`00000000
ffffd000`3a20d990 ffffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000Fieb ​​Fieb`a0xf14t
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000 00000000`00000000`00000000`00000000 00000000 00000000 pynt3000000000000000 0
000000ee'f25ed2b8 00000000'00000000: 00000000'00000000 00000000'00000000 00000000 00000000 00000000

Časť kódu, kde sa vyskytla chyba:

FOLLOWUP_IP:
nt!KiFastFailDispatch+d0
fffff804`0117da50 c644242000 mov byte ptr ,0
FAULT_INSTR_CODE: 202444c6
SYMBOL_STACK_INDEX: 2
SYMBOL_NAME: nt!KiFastFailDispatch+d0
FOLLOWUP_NAME: Vlastník stroja

Názov modulu v tabuľke objektov jadra. Ak sa analyzátoru podarilo zistiť problematický ovládač, názov sa zobrazí v poliach MODULE_NAME a IMAGE_NAME:

MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

1: kd > lmvm nt
Prezrite si úplný zoznam modulov
Načítaný súbor obrázka symbolu: ntkrnlmp.exe
Súbor obrázka namapovanej pamäte: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
Cesta k obrázku: ntkrnlmp.exe
Názov obrázku: ntkrnlmp.exe
Interný názov: ntkrnlmp.exe
Pôvodný názov súboru: ntkrnlmp.exe
Verzia produktu: 6.3.9600.18946
FileVersion: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

Vo vyššie uvedenom príklade analýza poukázala na súbor jadra ntkrnlmp.exe. Keď analýza výpisu pamäte indikuje systémový ovládač(napríklad win32k.sys) alebo súbor jadra (ako v našom príklade ntkrnlmp.exe), s najväčšou pravdepodobnosťou daný súbor nie je príčinou problému. Veľmi často sa ukazuje, že problém spočíva v ovládači zariadenia, nastavenia systému BIOS alebo porucha zariadenia.

Ak zistíte, že BSOD je spôsobený ovládačom tretej strany, jeho názov bude uvedený v hodnotách MODULE_NAME a IMAGE_NAME.

Napríklad:

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

Otvorte vlastnosti súboru ovládača a skontrolujte jeho verziu. Vo väčšine prípadov je problém s ovládačmi vyriešený ich aktualizáciou.

Nástroje na ladenie pre Windows- Nástroje na ladenie prevádzkového kódu systémy Windows. Ide o sadu voľne distribuovaných programov od spoločnosti Microsoft určených na ladenie kódu používateľského režimu a režimu jadra: aplikácie, ovládače, služby, moduly jadra. Sada nástrojov obsahuje konzolové a GUI debuggery, nástroje na prácu so symbolmi, súbormi, procesmi, nástroje na vzdialené ladenie. Sada nástrojov obsahuje nástroje, pomocou ktorých môžete nájsť príčiny porúch v rôznych komponentoch systému. Nástroje na ladenie pre Windows od určitého momentu nie sú dostupné na stiahnutie vo forme samostatnej distribúcie a sú súčasťou Windows SDK (Windows Software Development Kit). Inštrumentálna zostava Nástroje systému Windows SDK je zase k dispozícii ako súčasť programu predplatného MSDN alebo si ju možno voľne stiahnuť ako samostatnú distribúciu z msdn.microsoft.com. Podľa vývojárov najnovšie a najlepšie aktuálna verzia Nástroje na ladenie pre Windows sú obsiahnuté v súprave Windows SDK.

Nástroje na ladenie pre Windows sa aktualizujú a sprístupňujú verejnosti pomerne často a tento proces nezávisí od vydania operačných systémov. Preto pravidelne kontrolujte nové verzie.

Pozrime sa teraz, čo nám umožňujú najmä ladiace nástroje pre Microsoft Windows:

  • Ladenie lokálnych aplikácií, služieb (služieb), ovládačov a jadra;
  • Ladenie cez sieť vzdialené aplikácie, služby (služby), ovládače a jadro;
  • Ladenie spustených aplikácií v reálnom čase;
  • Analyzujte súbory výpisu pamäte aplikácií, jadra a systému ako celku;
  • Práca so systémami založenými na architektúrach x86/x64/Itanium;
  • Ladenie programov v užívateľskom režime a režime jadra;

K dispozícii sú nasledujúce verzie ladiacich nástrojov pre Windows: 32-bitová x86, Intel Itanium, 64-bitová x64. Potrebujeme dva z nich: x86 alebo x64.

Existuje niekoľko spôsobov, ako nainštalovať nástroje na ladenie pre Windows, v tomto článku zvážime iba tie hlavné:

  • Inštalácia cez webový inštalátor.
  • Inštalácia ladiacich nástrojov pre Windows z ISO Obraz systému Windows SDK.
  • Inštalácia ladiacich nástrojov pre Windows priamo z balíkov dbg_amd64.msi /dbg_x86.msi.

Zostáva nejasné, v akom bode, prečo by som mal inštalovať nástroje na ladenie do počítača? Často sa predsa stretávate so situáciou, kedy je zásah do pracovného prostredia krajne nežiaduci! A ešte viac, pretože inštalácia nového produktu, to znamená vykonávanie zmien v registri / systémových súboroch, môže byť úplne neprijateľná. Príkladom sú kritické servery. Prečo vývojári neuvažujú o prenosných verziách aplikácií, ktoré nevyžadujú inštaláciu?
Od verzie k verzii prechádza proces inštalácie balíka Debugging Tools for Windows určitými zmenami. Poďme teraz rovno do procesu inštalácie a pozrime sa na spôsoby, akými je možné sadu nástrojov nainštalovať.

Inštalácia ladiacich nástrojov pre Windows pomocou webového inštalátora

Prejdite na stránku Windows SDK Archive a nájdite sekciu s názvom Windows 10 a pod položkou „Windows 10 SDK (10586) a Microsoft Windows 10 Mobile Device Emulator (verzia 10586.11)“.

Kliknite na položku INŠTALOVAŤ SDK. Po kliknutí stiahnite a spustite súbor sdksetup.exe, čím sa spustí proces online inštalácie Windows SDK. V počiatočnej fáze inštalátor skontroluje, či je v systéme nainštalovaný balík .NET Framework Najnovšia verzia(momentálne je to 4.5). Ak balík chýba, ponúkne sa inštalácia a po dokončení sa stanica reštartuje. Ihneď po reštarte, vo fáze autorizácie používateľa, sa spustí proces inštalácie priamo so súpravou Windows SDK.

Často sa pri výbere všetkých komponentov balíka bez výnimky môžu počas procesu inštalácie vyskytnúť chyby. V tomto prípade sa odporúča inštalovať komponenty selektívne, minimálna požadovaná sada.

Po inštalácii ladiacich nástrojov pre Umiestnenie systému Windows ladiť súbory, keď túto metódu naša inštalácia bude nasledovná:

  • 64-bitové verzie: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • 32-bitové verzie: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x86

* kde x.x je špecifická verzia vývojového kitu;
Všimli ste si, že vo verziách 8 a vyšších sa inštalačné cesty výrazne líšia od klasických pre všetky predchádzajúce verzie ladiacich nástrojov?

Obrovské plus túto metódu Inštalácia ladiacich nástrojov pre Windows znamená inštaláciu verzií ladiacich nástrojov pre všetky architektúry naraz.

Inštalácia ladiacich nástrojov pre Windows z Windows SDK ISO

Táto metóda zahŕňa inštaláciu nástrojov na ladenie pre Windows pomocou úplného inštalačného obrazu súpravy Windows SDK (Software Developers Kit). Do určitého času stiahnite iso obraz pre príslušný systém môžete navštíviť stránku Windows SDK Archive. V súčasnosti však môžete získať obraz ISO súpravy SDK spustením webového inštalátora sdksetup.exe a výberom položky Stiahnite si súpravu Windows Software Development Kit v úvodnom okne inštalačného programu:

Ako sa zistilo, predchádzajúci spôsob inštalácie pomocou webového inštalátora je dosť rozmarný a často zlyháva. Na čistých systémoch sa nainštaluje bez problémov, ale na dostatočne zaťažených systémoch vznikajú početné problémy. Ak je to váš prípad, použite túto metódu.

Preto na stránke musíte vybrať požadovanú distribučnú súpravu, pre mňa (a myslím si, že pre mnohých) v súčasnosti je to " balík Windows SDK pre Windows 7 a .NET Framework 4“ a kliknite na odkaz „Získať obraz DVD ISO“ nižšie.

Pri práci so stránkou msdn.microsoft.com vám odporúčam použiť prehliadač internet Explorer, pretože boli pozorované prípady nefunkčnosti konkurenčných produktov!

Podľa toho je potrebné vyberať len podľa potreby. Bitová rýchlosť ladiacich nástrojov pre Windows je zvyčajne rovnaká ako bitová rýchlosť systému. Moje testovacie systémy sú väčšinou 64-bitové, takže vo väčšine prípadov sťahujem obraz pre 64-bitový systém GRMSDKX_EN_DVD.iso .
Potom po stiahnutí obrazu musíme nejako pracovať s existujúcim obrazom ISO. Tradičným spôsobom je, samozrejme, napaľovanie CD, ale je to dosť zdĺhavý a niekedy nákladný spôsob. Navrhujem použiť bezplatné služby na vytvorenie virtuálnych diskových zariadení v systéme. Osobne na tento účel najradšej používam program DEAMON Tools Lite. Niekto môže mať iné preferencie, priamejšie alebo odľahčené nástroje, chuť a farbu, ako sa hovorí.. Po nainštalovaní DAEMON Tools Lite stačí dvakrát kliknúť na obrazový súbor GRMSDKX_EN_DVD.iso a mám nový virtuálny kompaktný disk:

Potom dvojitým kliknutím aktivujem automatické načítanie a spustím inštaláciu Windows SDK:

Keď príde rad na výber komponentov, ktoré sa majú nainštalovať zo zoznamu, zakážeme úplne všetky možnosti okrem tých, ktoré sú označené na snímke obrazovky. To nám teraz pomôže vyhnúť sa zbytočným chybám.


Správne, snímka obrazovky zobrazuje dve možnosti: „Windows Performance Toolkit“ a „Debugging Tools for Windows“. Vyberte si oboje, pretože Windows Performance Toolkit sa vám pri práci určite bude hodiť! Ďalej po kliknutí na tlačidlo „Ďalej“ inštalácia pokračuje v normálnom režime. A na konci uvidíte nápis "Inštalácia dokončená".
Po dokončení inštalácie budú pracovné adresáre súpravy Debugging Tools for Windows nasledovné:

  • Pre x86 verziu:
  • Pre x64 verziu:

Tým sa dokončí inštalácia nástrojov na ladenie pre Windows.

Inštalácia ladiacich nástrojov pre Windows prostredníctvom súboru .msi

Ak narazíte na problémy s inštaláciou nástrojov na ladenie pre Windows s dvoma predchádzajúce spôsoby, na sklade máme ešte jeden, najspoľahlivejší a overený časom, ktorý pomohol takpovediac viackrát. Kedysi, pred integráciou do Windows SDK, boli Debugging Tools for Windows dostupné ako samostatný .msi inštalátor, ktorý možno stále nájsť, no už v útrobách distribúcie Windows SDK. Pretože už máme ISO systému Windows SDK, potom ho nemôžeme namontovať do systému, ale jednoducho ho pomocou už známeho otvoriť archivátor WinRAR, dobre, alebo akýkoľvek iný produkt, ktorý pracuje s obsahom ISO diskov.

Po otvorení obrázka musíme prejsť do adresára „Setup“ umiestneného v koreňovom adresári a potom vybrať jeden z adresárov:

  • Inštalácia 64-bitovej verzie: \Setup\WinSDKDebuggingTools_amd64 a rozbaľte súbor dbg_amd64.msi z tohto adresára.
  • Inštalácia 32-bitovej verzie: \Setup\WinSDKDebuggingTools a rozbaľte súbor dbg_x86.msi z tohto adresára.

Po dokončení inštalácie budú pracovné adresáre súpravy Debugging Tools for Windows nasledovné:

  • Pre x86 verziu: C:\Program Files (x86)\Debugging Tools for Windows (x86)
  • Pre x64 verziu: C:\Program Files\Debugging Tools for Windows (x64)

V tomto bode možno inštaláciu ladiacich nástrojov pre Windows považovať za dokončenú.

Ďalšie informácie

Neviem s čím to súvisí, možno s mojou nepozornosťou, ale po nainštalovaní Debugging Tools for Windows inštalátor nenastaví v premennej Path system path cestu k adresáru s debuggerom. To ukladá určité obmedzenia na spúšťanie rôznych úloh ladenia priamo z konzoly. Preto pri absencii cesty sám píšem do okna Premenné prostredia cesta k nástrojom na ladenie:

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

* Vo vašom prípade sa cesty môžu líšiť tak v dôsledku použitia OS s inou bitovou hĺbkou, ako aj v dôsledku Použitie SDK iná verzia.

Pomôcky balíka Debugging Tools for Windows môžu fungovať ako prenosné aplikácie, stačí skopírovať adresár z pracovného systému Microsoft Windows Performance Toolkit a použiť ju ako prenosnú verziu na produkčnom serveri. Nezabudnite však vziať do úvahy kapacitu systému !! Aj keď ste vykonali úplnú inštaláciu balíka na kritickom systéme, môžete začať pracovať hneď po inštalácii, nie je potrebný žiadny reštart.

Nástroje na ladenie pre Windows

A teraz, konečne, tu je zloženie ladiacich nástrojov pre Windows:

Súbor Účel
adplus.doc Dokumentácia pre pomôcku ADPlus.
adplus.exe Konzolová aplikácia, ktorá automatizuje prácu ladiaceho programu cdb na vytváranie výpisov, protokolových súborov pre jeden alebo viac procesov.
agestore.exe Pomôcka na odstránenie zastaraných súborov z úložného priestoru používaného serverom symbolov alebo zdrojovým serverom.
breakin.exe Pomôcka, ktorá umožňuje odoslať vlastnú kombináciu prestávok procesom, podobne ako pri stlačení CTRL+C.
cdb.exe Debugger konzoly používateľského režimu.
convertstore.exe Pomôcka na konverziu postáv z 2-vrstvových na 3-vrstvové.
dbengprx.exe Ripiter (proxy server) na vzdialené ladenie.
dbgpc.exe Pomôcka na zobrazenie informácií o stave RPC hovoru.
dbgsrv.exe Proces servera používaný na vzdialené ladenie.
dbh.exe Pomôcka na zobrazenie informácií o obsahu súboru symbolov.
dumpchk.exe Pomôcka na overenie výpisov. Pomôcka pre rýchla kontrola súbor výpisu.
dumpexam.exe Pomôcka na analýzu výpisu pamäte. Výsledkom je výstup do %SystemRoot%\MEMORY.TXT .
gflags.exe Editor príznakov globálneho systému. Pomôcka spravuje kľúče databázy Registry a ďalšie nastavenia.
i386kd.exe Zavinovačka pre kd. Kedysi sa to volalo kd for systems on Základňa Windows NT/2000 pre x86 stroje? Pravdepodobne odišiel z dôvodu kompatibility.
ia64kd.exe Zavinovačka pre kd. Bolo to to, čo sa kedysi nazývalo kd pre systémy založené na Windows NT/2000 pre stroje ia64? Pravdepodobne odišiel z dôvodu kompatibility.
kd.exe Debugger konzoly v režime jadra.
kdbgctrl.exe Nástroj na správu ladenia jadra. Pomôcka na správu a konfiguráciu pripojenia na ladenie jadra.
kdsrv.exe Pripojovací server pre KD. Pomôcka je malá aplikácia, ktorá beží a čaká na vzdialené pripojenia. kd beží na klientovi a pripája sa k tomuto serveru na vzdialené ladenie. Server aj klient musia pochádzať z rovnakého zostavenia nástrojov na ladenie.
kill.exe Pomôcka na ukončenie procesov.
list.exe Nástroj na zobrazenie obsahu súboru na obrazovke. Táto miniatúrna pomôcka bola pribalená s jediným účelom - prezeraním veľkých textových alebo protokolových súborov. Zaberá málo miesta v pamäti, pretože načítava text po častiach.
logger.exe Malý debugger, ktorý dokáže pracovať iba s jedným procesom. Pomôcka vloží do priestoru procesu súbor logexts.dll, ktorý zaznamená všetky volania funkcií a ďalšie akcie skúmaného programu.
logviewer.exe Pomôcka na prezeranie protokolov napísaných ladiacim programom logger.exe.
ntsd.exe Microsoft NT Symbolic Debugger (NTSD). Ladiaci nástroj, ktorý je identický s cdb, okrem toho, že pri spustení vytvorí textové okno. Rovnako ako cdb, aj ntsd je schopný ladiť konzolové aplikácie aj grafické aplikácie.
pdbcopy.exe Pomôcka na odstránenie súkromných symbolov zo súboru symbolov, ovládajúca verejné symboly zahrnuté v súbore symbolov.
remote.exe Nástroj na vzdialené ladenie a diaľkové ovládanie akýkoľvek konzolový debugger KD, CDB a NTSD. Umožňuje vzdialene spúšťať všetky tieto ladiace programy konzoly.
rtlist.exe Vzdialený prehliadač úloh. Pomôcka sa používa na zobrazenie zoznamu bežiace procesy prostredníctvom procesu servera DbgSrv.
symchk.exe Pomôcka na stiahnutie symbolov zo servera symbolov spoločnosti Microsoft a vytvorenie lokálnej vyrovnávacej pamäte symbolov.
symstore.exe Pomôcka na vytvorenie siete resp lokálny obchod postavy (2-vrstvové/3-vrstvové). Sklad symbolov je špecializovaný adresár na disku, ktorý je zostavený podľa určitej štruktúry a obsahuje symboly. V koreňovom adresári symbolov sa vytvorí štruktúra podpriečinkov s názvami zhodnými s názvami komponentov. Každý z týchto podpriečinkov zase obsahuje vnorené podpriečinky so špeciálnymi názvami získanými hašovaním binárnych súborov. Pomôcka symstore skenuje zložky komponentov a pridáva nové komponenty do skladu symbolov, kde ich môže získať ktorýkoľvek klient. Hovorí sa, že symstore sa používa na získanie symbolov z 0-vrstvového úložiska a ich uloženie do 2-vrstvového/3-vrstvového úložiska.
tlist.exe Prehliadač úloh. Nástroj na výpis všetkých spustených procesov.
umdh.exe Pomôcka haldy výpisu v užívateľskom režime. Nástroj na analýzu hromady vybraného procesu. Umožňuje zobraziť rôzne možnosti pre haldu.
usbview.exe USB prehliadač. pomôcka na zobrazenie USB zariadenia pripojený k počítaču.
vmdemux.exe Demultiplexer virtuálneho stroja. Vytvorí viacero pomenovaných kanálov pre jedno pripojenie COM. Kanály sa používajú na ladenie rôznych komponentov virtuálneho počítača
windbg.exe Debugger v používateľskom režime a režime jadra s GUI.