Računalniki Windows Internet

Namestitev orodij za odpravljanje napak v sistemu Windows. Orodja za odpravljanje napak v sistemu Windows: diagnosticirajte in popravite orodja za odpravljanje napak BSOD za uporabo v sistemu Windows

dne 22. junija 2010

Prej je bil Windbg na voljo ločeno za prenos. Toda za najnovejše različice ga Microsoft hrani kot del SDK za Windows. Spodaj najdete povezave za prenos.

Windows 10

Najnovejšo različico programa Windbg za Windows 7 lahko prenesete s povezave https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

Windows 7

Prenesite namestitvene programe s zgornjih povezav. Upoštevajte, da to ne prenese celotnega SDK -ja, ampak le namestitveni program. Ko zaženete datoteko, lahko izberete, katera orodja želite prenesti. Če vas zanima samo Windbg, lahko izključite vse ostalo in v razdelku »Skupni pripomočki« izberete samo »Orodja za odpravljanje napak«

Zgornji paket namesti različico windbg 6.12. Če želite hitro namestiti windbg, lahko uporabite starejšo različico (6.11), ki jo lahko prenesete s
povezavo na koncu te objave.

Ko namestite program, ga najdete v meniju Start -> Vsi programi -> Orodja za odpravljanje napak za Windows -> Windbg

V času kritičnega zrušitve se operacijski sistem Windows prekine in prikaže modri zaslon smrti (BSOD). Vsebina pomnilnik z naključnim dostopom vsi podatki o napaki, ki se je pojavila, so zapisani v datoteko ostranjevanja. Na naslednjem zagon sistema Windows na podlagi shranjenih podatkov se ustvari dump crash z informacijami o odpravljanju napak. V dnevniku sistemskih dogodkov nastane kritična napaka.

Pozor! Dump crash se ne ustvari, če podsistem diska odpove ali kritična napaka pojavil v začetni fazi zagona sistema Windows.

Vrste odlagališč zrušitev sistema Windows

Na primeru trenutnega operacijskega sistema Windows 10 (Windows Server 2016) bomo upoštevali glavne vrste pomnilnikov pomnilnika, ki jih lahko sistem ustvari:

  • Majhen pomnilnik(256 KB). Ta vrsta datoteke vsebuje minimalno količino informacij. Vsebuje samo sporočilo o napaki BSOD, informacije o gonilnikih, procesih, ki so bili aktivni v času sesutja, in kateri proces ali nit jedra je povzročila zrušitev.
  • Izpis pomnilnika jedra... Običajno majhne velikosti - tretjina fizičnega spomina. Izpis pomnilnika jedra je bolj podroben kot mini izpis. Vsebuje informacije o gonilnikih in programih v načinu jedra, vključuje pomnilnik, dodeljen jedru sistema Windows in plasti abstrakcije strojne opreme (HAL), ter pomnilnik, namenjen gonilnikom in drugim programom v načinu jedra.
  • Popoln izpis pomnilnika... Največja prostornina in zahteva pomnilnik, ki je enak RAM -u vašega sistema plus 1 MB, potrebna okna za ustvarjanje te datoteke.
  • Samodejni izpis pomnilnika... Informacijsko ustreza izpisu pomnilnika jedra. Razlikuje se le po tem, koliko prostora porabi za ustvarjanje datoteke dump. Ta vrsta datoteke ni obstajala v sistemu Windows 7. Dodana je bila v sistemu Windows 8.
  • Izpis aktivnega pomnilnika... Ta vrsta filtrira elemente, ki ne morejo ugotoviti vzroka okvare sistema. To je bilo dodano v sistemu Windows 10 in je še posebej uporabno, če uporabljate navidezni stroj ali če je vaš sistem gostitelj Hyper-V.

Kako omogočim izpis pomnilnika v sistemu Windows?

Z Win + Pause odprite okno sistemskih nastavitev, izberite " Dodatni sistemski parametri"(Napredne sistemske nastavitve). Na zavihku " Poleg tega"(Napredno), razdelek" "(Zagon in obnovitev) kliknite" Opcije"(Nastavitve). V oknu, ki se odpre, konfigurirajte dejanja v primeru okvare sistema. Potrdite polje » Zapišite dogodke v sistemski dnevnik(Zapišite dogodek v sistemski dnevnik), izberite vrsto izpisa, ki naj se ustvari, ko se sistem zruši. Če je v potrditvenem polju " Zamenjajte obstoječo datoteko dump"(Prepiši katero koli obstoječo datoteko) potrdite polje, potem bo datoteka ob vsaki napaki prepisana. To potrditveno polje je bolje odstraniti, potem boste imeli več informacij za analizo. Onemogočite tudi samodejni ponovni zagon.

V večini primerov bo za analizo vzroka BSOD dovolj že majhen pomnilnik.

Ko se pojavi BSOD, lahko analizirate datoteko dump in poiščete vzrok zrušitev. Mini izpis je privzeto shranjen v mapi% systemroot% \ minidump. Za analizo datoteke dump priporočam uporabo programa WinDBG(Microsoftov razhroščevalnik jedra).

Namestitev programa WinDBG v sistemu Windows

Pripomoček WinDBG je vključeno v " SDK za Windows 10"(SDK za Windows 10). ...

Datoteka se pokliče winsdksetup.exe, velikost 1,3 MB.

Zaženite namestitev in izberite, kaj točno želite narediti - namestite paket v ta računalnik ali ga naložite za namestitev v druge računalnike. Paket namestite v lokalni računalnik.

Lahko namestite celoten paket, če pa želite namestiti samo orodje za odpravljanje napak, izberite Orodja za odpravljanje napak za Windows.

Ko so nameščene, lahko bližnjice WinDBG najdete v začetnem meniju.

Konfiguriranje povezave datotek .dmp z WinDBG

Če želite odpreti datoteke dump s preprostim klikom, razširitev .dmp povežite s pripomočkom WinDBG.

  1. Odpri ukazna vrstica kot skrbnik in zaženite ukaze za 64-bitni sistem: cd C: \ Program Files (x86) \ Windows Kits \ 10 \ Debuggers \ x64
    windbg.exe –IA
    za 32-bitni sistem:
    C: \ Program Files (x86) \ Windows Kits \ 10 \ Debuggers \ x86
    windbg.exe –IA
  2. Posledično bodo vrste datotek: .DMP, .HDMP, .MDMP, .KDMP, .WEW - povezane z WinDBG.

Nastavitev strežnika za odpravljanje napak v WinDBG

Simboli za odpravljanje napak (simboli za odpravljanje napak ali datoteke s simboli) so bloki podatkov, ustvarjeni med sestavljanjem programa skupaj z izvedljivo datoteko. Takšni podatkovni bloki vsebujejo informacije o imenih spremenljivk, ki se imenujejo funkcije, knjižnice itd. Ti podatki niso potrebni pri izvajanju programa, vendar so uporabni pri odpravljanju napak. Microsoftove komponente so sestavljene s simboli, razdeljenimi prek strežnika Microsoft Symbol Server.

WinDBG konfigurirajte na uporabo Microsofta Strežnik simbolov:

  • Odprite WinDBG;
  • Pojdite na meni mapa –> Pot datoteke s simboli;
  • Dodajte vrstico, ki vsebuje URL za prenos simbolov za odpravljanje napak s spletnega mesta Microsoft in mapo za shranjevanje predpomnilnika: SRV * E: \ Sym_WinDBG * http: //msdl.microsoft.com/download/symbols V tem primeru je predpomnilnik naložen v mapo E: \ Sym_WinDBG lahko določite katero koli.
  • Ne pozabite shraniti sprememb v meni mapa–>Shrani delovni prostor;

WinDBG bo iskal simbole v lokalni mapi in če v njej ne najde potrebnih simbolov, bo samodejno prenesel simbole z določenega spletnega mesta. Če želite dodati svojo mapo s simboli, lahko to storite tako:

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

Če nimate internetne povezave, najprej prenesite paket simbolov iz vira Windows Symbol Packages.

Analiza izpada izpada v WinDBG

Odpravljalec napak WinDBG odpre datoteko dump in prenese potrebne simbole za odpravljanje napak iz lokalne mape ali iz interneta. Med tem postopkom ne morete uporabljati WinDBG. Na dnu okna (v ukazni vrstici razhroščevalnika) se pojavi napis Debugee ni povezan.

Ukazi se vnesejo v ukazno vrstico na dnu okna.

Najpomembnejša stvar, na katero morate biti pozorni, je koda napake, ki je vedno navedena v šestnajstiški vrednosti in izgleda tako 0xXXXXXXXX(navedeno v eni od možnosti - STOP :, 02.07.2019 0008F, 0x8F). V našem primeru je koda napake 0x139.

Odpravljalec napak vas pozove, da zaženete ukaz! Analyze -v, le premaknite miško nad povezavo in kliknite. Čemu služi ta ukaz?

  • Izvede predhodno analizo pomnilnika in zagotovi podrobne informacije za začetek analize.
  • Ta ukaz bo prikazal kodo STOP in simbolično ime napake.
  • Prikazuje niz klicev ukazov, ki so povzročili nenormalno prekinitev.
  • Poleg tega so tukaj prikazane napake v naslovu IP, procesih in registrih.
  • Ekipa lahko zagotovi že pripravljena priporočila za rešitev težave.

Glavne točke, na katere morate biti pozorni pri analizi po zagonu ukaza! Analyze –v (seznam je nepopoln).

1: kd>! Analizirajte -v


* *
* Analiza napak *
* *
*****************************************************************************
Simbolično ime napake STOP (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Opis napake (komponenta jedra je poškodovala kritično strukturo podatkov. Ta poškodba bi lahko napadalcu omogočila, da prevzame nadzor nad tem računalnikom):

Komponenta jedra je poškodovala kritično strukturo podatkov. Korupcija bi lahko zlonamernemu uporabniku omogočila nadzor nad tem računalnikom.
Argumenti napak:

Argumenti:
Arg1: 0000000000000003, LIST_ENTRY je poškodovan (tj. Dvojno odstranite).
Arg2: ffffd0003a20d5d0, Naslov okvira pasti za izjemo, ki je povzročila napako
Arg3: ffffd0003a20d528, Naslov zapisa izjeme za izjemo, ki je povzročila napako
Arg4: 0000000000000000, rezervirano
Podrobnosti o odpravljanju napak:
------------------

Števec prikazuje, kolikokrat se je sistem zrušil s podobno napako:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

Koda napake STOP v skrajšani obliki:

BUGCHECK_STR: 0x139

Postopek, med izvajanjem katerega je prišlo do napake (ni nujno, da je bil vzrok napake, ravno v času napake v pomnilniku je ta postopek tekel):

PROCESS_NAME: sqlservr.exe

Dešifriranje kode napake: Sistem je v tej aplikaciji zaznal preliv medpomnilnika sklada, kar bi napadalcu omogočilo, da prevzame nadzor nad to aplikacijo.

ERROR_CODE: (NTSTATUS) 0xc0000409 - Sistem je v tej aplikaciji zaznal prekoračitev vmesnega pomnilnika, ki temelji na nizu. Ta prekoračitev bi lahko zlonamernemu uporabniku omogočila nadzor nad to aplikacijo.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - Sistem je v tej aplikaciji zaznal prekoračitev vmesnega pomnilnika, ki temelji na nizu. Ta prekoračitev bi lahko zlonamernemu uporabniku omogočila nadzor nad to aplikacijo.

Zadnji klic v nizu:

LAST_CONTROL_TRANSFER: od fffff8040117d6a9 do fffff8040116b0a0

Niz klicev v času napake:

STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`3a20d528: nt! KeBugCheckEx
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2: nt! KiBugCheckDispatch + 0x69
ffffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt! KiFastFailDispatch + 0xd0
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`000006f9: nt! KiRaiseSecurityCheckFailure + 0x3d0
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951: nt! ?? :: FNODOBFM :: `niz" + 0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 ffffe001`0a34c600: nt! IopSynchronousServiceTail + 0x379
ffffd000`3a20d990 fffff804`0117d313: ffffffff`fffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380: nt! NtWriteFile + 0x694
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: nt! KiSystemServiceCopyEnd + 0x13
000000ee`f25ed2b8 00000000`00000000: 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000: 0x00007ffb`475307da

Del kode, kjer je prišlo do napake:

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

Ime modula v tabeli objektov jedra. Če analizator zazna težaven gonilnik, je ime prikazano v poljih MODULE_NAME in IMAGE_NAME:

MODUL_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

1: kd> lmvm nt
Prebrskajte celoten seznam modulov
Naložena slikovna datoteka simbola: ntkrnlmp.exe
Slika preslikane pomnilniške datoteke: C: \ ProgramData \ dbg \ sym \ ntoskrnl.exe \ 5A9A2147787000 \ ntoskrnl.exe
Pot do slike: ntkrnlmp.exe
Ime slike: ntkrnlmp.exe
Notranje ime: ntkrnlmp.exe
OriginalIme datoteke: ntkrnlmp.exe
Različica izdelka: 6.3.9600.18946
FileVersion: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

V zgornjem primeru je analiza pokazala na datoteko jedra ntkrnlmp.exe. Ko analiza izpisa pomnilnika kaže na sistemski gonilnik (na primer win32k.sys) ali datoteko jedra (kot je v našem primeru ntkrnlmp.exe), je najverjetneje to datoteko ni vzrok težave. Zelo pogosto se izkaže, da je težava v gonilniku naprave, Nastavitve BIOS -a ali okvare strojne opreme.

Če ste videli, da je BSOD povzročil gonilnik tretje osebe, bo njegovo ime navedeno v vrednostih MODULE_NAME in IMAGE_NAME.

Na primer:

Pot do slike: \ SystemRoot \ system32 \ drivers \ cmudaxp.sys
Ime slike: cmudaxp.sys

Odprite datoteko gonilnika in preverite njeno različico. V večini primerov težavo z gonilniki odpravite tako, da jih posodobite.

Orodja za odpravljanje napak za Windows- Odpravljanje napak orodij operacijske kode Windows sistemi... So niz brezplačne Microsoftove programske opreme, namenjene odpravljanju napak v uporabniškem načinu in kodi v načinu jedra: aplikacije, gonilniki, storitve, moduli jedra. Komplet orodij vključuje odpravljalnike napak za konzole in grafični vmesnik, pripomočke za delo s simboli, datotekami, procesi in pripomočki za zagotavljanje oddaljenega odpravljanja napak. Komplet orodij vsebuje pripomočke, s katerimi lahko poiščete vzroke za okvare v različnih sestavnih delih sistema. Orodja za odpravljanje napak za Windows od določenega trenutka niso na voljo za prenos v obliki samostojnega distribucijskega kompleta in so vključeni v Windows SDK (Windows Software Development Kit). Instrumentalni komplet Orodja za Windows SDK je na voljo kot del naročniškega programa MSDN ali pa ga lahko prosto prenesete kot samostojno distribucijo z msdn.microsoft.com. Po mnenju razvijalcev, zadnji in najbolj trenutna verzija Orodja za odpravljanje napak za Windows so v SDK -ju za Windows.

Orodja za odpravljanje napak za Windows so pogosto posodobljena in javno dostopna, ta postopek pa ni odvisen od izdaje operacijskih sistemov. Zato občasno preverite nove različice.

Zdaj pa poglejmo, čemu služijo zlasti orodja za odpravljanje napak Microsoft Windows:

  • Odpravljanje napak v lokalnih aplikacijah, storitvah (storitvah), gonilnikih in jedru;
  • Odpravljanje napak v oddaljenih aplikacijah, storitvah (storitvah), gonilnikih in jedru po omrežju;
  • Odpravljanje napak pri izvajanju aplikacij v realnem času;
  • Analizirajte datoteke izpisa pomnilnika aplikacij, jedra in sistema kot celote;
  • Delo s sistemi, ki temeljijo na arhitekturah x86 / x64 / Itanium;
  • Odpravljanje napak v uporabniškem načinu in programih v načinu jedra;

Na voljo so naslednje različice orodij za odpravljanje napak za Windows: 32-bitni x86, Intel Itanium, 64-bitni x64. Potrebujemo dva: x86 ali x64.

Orodja za odpravljanje napak za Windows lahko namestite na več načinov, v tem članku bomo obravnavali le glavne:

  • Namestitev prek spletnega namestitvenega programa.
  • Namestitev orodij za odpravljanje napak za Windows iz ISO Slika sistema Windows SDK.
  • Namestitev orodij za odpravljanje napak za Windows neposredno iz paketov dbg_amd64.msi /dbg_x86.msi.

Na kateri točki ostaja nejasno, zakaj naj v računalnik namestim komplet orodij za odpravljanje napak? Konec koncev se pogosto srečujete s situacijo, ko poseg v delovno okolje zelo nezaželeno! Poleg tega je lahko namestitev novega izdelka, to je spreminjanje registra / sistemskih datotek, popolnoma nesprejemljiva. Primeri so kritični strežniki. Zakaj razvijalci ne razmišljajo o možnosti s prenosnimi (prenosnimi) različicami aplikacij, ki ne zahtevajo namestitve?
Postopek namestitve paketa Debugging Tools for Windows je od različice do različice doživel več sprememb. Zdaj pa pojdimo naravnost v postopek namestitve in poglejmo načine, na katere je mogoče namestiti komplet orodij.

Namestitev orodij za odpravljanje napak za Windows s spletnim namestitvenim programom

Pojdite na stran Arhiv SDK za Windows in poiščite razdelek pod Ime sistema Windows 10 in manj, glejte »SDK za Windows 10 (10586) in emulator mobilnih naprav Microsoft Windows 10 (različica 10586.11)«.

Kliknemo na predmet NAMESTITE SDK... Po kliku prenesite in zaženite datoteko sdksetup.exe, ki sproži spletno namestitev Windows SDK. Na začetni stopnji bo namestitveni program preveril, ali je paket .NET Framework nameščen v sistemu. Najnovejša različica(trenutno 4,5). Če paket manjka, bo na voljo namestitev, postaja pa se bo po zaključku znova zagnala. Takoj po ponovnem zagonu, v fazi avtorizacije uporabnika, se postopek namestitve začne neposredno iz SDK -ja Windows.

Pogosto lahko pri izbiri vseh komponent paketa brez izjeme med namestitvijo pride do napak. V tem primeru je priporočljivo, da sestavne dele namestite selektivno, kar je minimalno potrebno.

Ko je namestitev orodij za odpravljanje napak za Windows končana, bodo lokacije datotek za odpravljanje napak za ta način namestitve naslednje:

  • 64-bitne različice: C: \ Program Files (x86) \ Windows Kits \ x.x \ Debuggers \ x64
  • 32-bitne različice: C: \ Program Files (x86) \ Windows Kits \ x.x \ Debuggers \ x86

* kjer je x.x posebna različica razvojnega kompleta;
Opazili smo, da se različice 8 in novejše, namestitvene poti za vsakogar opazno razlikujejo od klasičnih prejšnje različice orodja za odpravljanje napak?

Velik plus ta metoda Namestitev orodij za odstranjevanje napak za Windows je namestitev različic orodij za odpravljanje napak za vse arhitekture hkrati.

Nameščanje orodij za odpravljanje napak za Windows iz ISO slike SDK za Windows

Ta metoda vključuje namestitev orodij za odpravljanje napak za Windows z uporabo celotne namestitvene podobe paketa SDK za Windows (komplet za razvijalce programske opreme). Do določenega časa prenesite ISO slika za ustrezen sistem je lahko na strani Windows SDK Archive. Vendar pa trenutno lahko dobite ISO sliko SDK tako, da zaženete spletni namestitveni program sdksetup.exe in izberete element Prenesite komplet za razvoj programske opreme Windows v začetnem oknu namestitvenega programa:

Kot je bilo ugotovljeno, je prejšnja metoda namestitve z uporabo spletnega namestitvenega programa precej muhasta in pogosto ne uspe. Na čistih sistemih je nameščen brez težav, pri dovolj obremenjenih sistemih pa nastanejo številne težave. Če imate ravno tak primer, uporabite to metodo.

V skladu s tem je treba na strani izbrati potreben distribucijski komplet, zame (in mislim, da za mnoge), da je trenutno "Windows SDK za Windows 7 in .NET Framework 4" in tik spodaj kliknite povezavo "Get ISO slika DVD diska "...

Pri delu s spletnim mestom msdn.microsoft.com svetujem uporabo brskalnika internet Explorer saj so bili primeri nedelovanja konkurenčnih izdelkov!

V skladu s tem je treba izbrati le, kadar je to potrebno. Običajno je bitnost orodij za odpravljanje napak za Windows enaka bitnosti sistema. Moji preiskovani sistemi so večinoma 64-bitni, zato v večini primerov prenesem sliko za 64-bitni sistem GRMSDKX_EN_DVD.iso.
Potem, ko prenesemo sliko, moramo nekako delati z obstoječo sliko ISO. Tradicionalni način je seveda zapisovanje CD -ja, vendar je to precej dolga in včasih draga metoda. Predlagam uporabo brezplačnih pripomočkov za ustvarjanje virtualnih diskovnih naprav v sistemu. Osebno v ta namen raje uporabljam program DEAMON Tools Lite. Nekdo ima morda druge preference, bolj neposredne ali lahke pripomočke, okus in barvo, kot pravijo .. Po namestitvi Orodja DAEMON Lite, samo dvakrat kliknem na slikovno datoteko GRMSDKX_EN_DVD.iso in v sistemu imam nov virtualni CD:

Potem dvojni klik Aktiviram samodejni zagon in začnem namestitev Windows SDK:

Ko pride na vrsto izbira komponent za namestitev s seznama, onemogočimo absolutno vse možnosti, razen tistih, ki so označene na posnetku zaslona. Tako se bomo zdaj izognili nepotrebnim napakam.


Vse je točno tako, na posnetku zaslona sta označeni dve možnosti: "Orodja za zmogljivost Windows" in "Orodja za odpravljanje napak za Windows". Izberite oboje, ker vam bo Windows Performance Toolkit zagotovo prišel prav pri vašem delu! Poleg tega se namestitev po kliku na gumb "Naprej" nadaljuje kot običajno. Na koncu boste videli napis "Namestitev je končana".
Na koncu namestitve bodo delovni imeniki nabora orodij za odpravljanje napak za Windows naslednji:

  • Za različico x86:
  • Za različico x64:

S tem je dokončana namestitev orodij za odpravljanje napak za Windows.

Namestitev orodij za odpravljanje napak za Windows prek datoteke .msi

V primeru težav med namestitvijo orodij za odpravljanje napak za Windows na dva prejšnja načina imamo še enega, najbolj zanesljivega in časovno preizkušenega, ki je tako rekoč pomagal večkrat. Nekoč, pred integracijo v Windows SDK, so bila Orodja za odpravljanje napak za Windows na voljo kot ločen namestitveni program .msi, ki ga lahko še vedno najdemo že v črevesju distribucijskega kompleta za Windows SDK. Ker imamo ISO-podobo SDK-ja za Windows v rokah, je ne moremo namestiti v sistem, ampak jo preprosto odpremo s pomočjo znanega arhivirja WinRAR ali katerega koli drugega izdelka, ki deluje z vsebino diskov ISO.

Ko odpremo sliko, moramo iti v imenik "Setup", ki se nahaja v korenu, in nato izbrati enega od imenikov:

  • Če želite namestiti 64-bitno različico: \ Setup \ WinSDKDebuggingTools_amd64 in iz tega imenika razpakirajte datoteko dbg_amd64.msi.
  • Če želite namestiti 32-bitno različico: \ Setup \ WinSDKDebuggingTools in iz tega imenika razpakirajte datoteko dbg_x86.msi.

Na koncu namestitve bodo delovni imeniki nabora orodij za odpravljanje napak za Windows naslednji:

  • Za različico x86: C: \ Program Files (x86) \ Debugging Tools za Windows (x86)
  • Za različico x64: C: \ Program Files \ Debugging Tools za Windows (x64)

Na tej točki je orodje za odpravljanje napak za Windows končano.

Dodatne informacije

Ne vem, s čim je to povezano, morda z mojo neprevidnostjo, vendar po namestitvi orodij za odpravljanje napak za Windows namestitveni program ne registrira poti do imenika z razhroščevalnikom v sistemski spremenljivki Path. To nalaga nekatere omejitve pri izvajanju različnih nalog odpravljanja napak neposredno iz konzole. Zato v odsotnosti poti sam pišem v okno Okoljske spremenljivke pot do orodij za odpravljanje napak:

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

* V vašem primeru se poti lahko razlikujejo zaradi uporabe OS z drugačno bitnostjo in zaradi uporabe SDK -ja druge različice.

Orodja za odpravljanje napak za pakete Windows lahko delujejo kot prenosne aplikacije, le kopirati morate imenik iz delovnega sistema Microsoft Windows Performance Toolkit in jo uporabite kot prenosno različico na produkcijskem strežniku. Ne pozabite pa upoštevati zmogljivosti sistema !! Tudi če ste paket v celoti namestili v kritičen sistem, lahko začnete z delom takoj po namestitvi, ponovni zagon ni potreben.

Orodja za odpravljanje napak za Windows Composition

In končno predstavljamo sestavo orodij za odpravljanje napak za Windows:

mapa Imenovanje
adplus.doc Dokumentacija za pripomoček ADPlus.
adplus.exe Konzolna aplikacija, ki avtomatizira razhroščevalnik cdb za ustvarjanje izpisov, dnevniških datotek za enega ali več procesov.
agestore.exe Pripomoček za odstranjevanje zastarelih datotek iz skladišča, ki ga uporablja strežnik simbolov ali izvorni strežnik.
breakin.exe Pripomoček, ki vam omogoča pošiljanje uporabniško določene kombinacije prekinitev v procese, podobno pritisku CTRL + C.
cdb.exe Razhroščevalnik konzole uporabniškega načina.
convertstore.exe Pripomoček za pretvorbo simbolov iz 2-stopenjske v 3-stopenjsko.
dbengprx.exe Reaper (proxy strežnik) za oddaljeno odpravljanje napak.
dbgrpc.exe Pripomoček za prikaz informacij o stanju klica RPC.
dbgsrv.exe Strežniški postopek, ki se uporablja za odpravljanje napak na daljavo.
dbh.exe Pripomoček za prikaz informacij o vsebini datoteke s simboli.
dumpchk.exe Pripomoček za preverjanje izpisa. Pripomoček za hitro preverjanje datoteke izpisa.
dumpexam.exe Pripomoček za analizo pomnilnika. Rezultat je prikazan v% SystemRoot% \ MEMORY.TXT.
gflags.exe Urednik globalnih zastav sistema. Pripomoček upravlja registrske ključe in druge nastavitve.
i386kd.exe Zavitek za kd. Kdaj se je imenoval kd za sisteme Windows NT / 2000 za stroje x86? Verjetno zaradi kompatibilnosti.
ia64kd.exe Zavitek za kd. Kdaj se je imenoval kd za sisteme Windows NT / 2000 za stroje ia64? Verjetno zaradi kompatibilnosti.
kd.exe Razhroščevalnik konzole v načinu jedra.
kdbgctrl.exe Orodje za odpravljanje napak v jedru. Pripomoček za upravljanje in konfiguriranje povezave za odpravljanje napak v jedru.
kdsrv.exe Povezovalni strežnik za KD. Pripomoček je majhna aplikacija, ki se zažene in čaka oddaljene povezave... kd teče na odjemalcu in se poveže s tem strežnikom za oddaljeno odpravljanje napak. Strežnik in odjemalec morata biti iz iste sestave orodij za odpravljanje napak.
kill.exe Pripomoček za prekinitev procesov.
list.exe Pripomoček za prikaz vsebine datoteke na zaslonu. Ta miniaturni pripomoček je bil združen z enim namenom - ogledom velikega besedila ali dnevniških datotek. Ko nalaga besedilo v kosih, zavzame malo pomnilnika.
logger.exe Miniaturni razhroščevalnik, ki lahko deluje samo z enim procesom. Pripomoček vnese logexts.dll v prostor procesa, ki beleži vse klice funkcij in druga dejanja programa v preiskavi.
logviewer.exe Pripomoček za ogled dnevnikov, ki jih je napisal razhroščevalnik logger.exe.
ntsd.exe Simbolični razhroščevalnik Microsoft NT (NTSD). Debugger, enak cdb, le da ob zagonu ustvari polje z besedilom. Tako kot cdb lahko tudi ntsd odpravlja napake tako v konzolnih aplikacijah kot v grafičnih aplikacijah.
pdbcopy.exe Pripomoček za odstranjevanje zasebnih simbolov iz datoteke s simboli, nadzor nad javnimi simboli, vključenimi v datoteko simbolov.
remote.exe Pripomoček za odpravljanje napak na daljavo in daljinski nadzor katere koli razhroščevalne konzole KD, CDB in NTSD. Omogoča vam, da vse te odpravljače napak v konzoli zaženete na daljavo.
rtlist.exe Oddaljeni pregledovalnik opravil. Pripomoček se uporablja za seznam izvedenih procesov skozi strežniški proces DbgSrv.
symchk.exe Pripomoček za prenos simbolov iz Microsoftovega strežnika simbolov in ustvarjanje lokalnega predpomnilnika simbolov.
symstore.exe Pripomoček za ustvarjanje omrežja ali lokalnega shranjevanja simbolov (2-stopenjski / 3-stopenjski). Shramba simbolov je specializiran imenik na disku, ki je zgrajen v skladu z določeno strukturo in vsebuje simbole. V korenskem imeniku simbolov je ustvarjena struktura podmap z imeni, ki so enaka imenom komponent. Vsaka od teh podmap pa vsebuje ugnezdene podmape s posebnimi imeni, pridobljenimi z zgoščevanjem binarnih datotek. Pripomoček symstore skenira mape komponent in doda nove komponente v shrambo simbolov, od koder jih lahko pridobi kateri koli odjemalec. Symstore naj bi se uporabljal za pridobivanje simbolov iz 0-stopenjskega pomnilnika in njihovo shranjevanje v 2-slojno / 3-stopenjsko shrambo.
tlist.exe Pregledovalnik opravil. Pripomoček za popis vseh tekočih procesov.
umdh.exe Pripomoček za kopičenje dumpa v uporabniškem načinu. Pripomoček za analizo kup (kup) izbranega procesa. Omogoča prikaz različnih možnosti za kup.
usbview.exe Pregledovalnik USB. Pripomoček za ogled naprav USB, priključenih na računalnik.
vmdemux.exe Demultiplekser navidezni stroj... Ustvari več imenovanih cevi za eno samo COM povezavo. Kanali se uporabljajo za odpravljanje napak različnih komponent navideznega stroja
windbg.exe Odpravljanje napak v uporabniškem načinu in načinu jedra.

Predstavljamo WinDBG - 1. del

Aleksander Antipov

WinDBG je odličen iskalnik napak. Morda nima zelo uporabniku prijaznega vmesnika in privzeto nima črnega ozadja, vendar je trenutno eden najmočnejših in stabilnih iskalnikov napak v sistemu Windows. V tem članku vam bom predstavil osnove WinDBG, da boste lahko začeli z njim.


WinDBG je odličen iskalnik napak. Morda nima zelo uporabniku prijaznega vmesnika in privzeto nima črnega ozadja, vendar je trenutno eden najmočnejših in stabilnih iskalnikov napak v sistemu Windows. V tem članku vam bom predstavil osnove WinDBG, da boste lahko začeli z njim.

To je prvi članek v nizu o WinDBG. Seznam vseh člankov, vključenih v ta cikel:

  • 1. del - namestitev, vmesnik, simboli, oddaljeno / lokalno odpravljanje napak, sistem pomoči, moduli, registri.
  • 2. del - prelomne točke.
  • 3. del - Pregled pomnilnika, postopno odpravljanje napak v programu, nasveti in triki.

V tem članku bomo obravnavali namestitev in povezavo s procesom, v nadaljevanju pa prelomne točke, postopno odpravljanje napak in pregled pomnilnika.

Namestitev programa WinDBG

V primerjavi z operacijskim sistemom Windows 7 je postopek namestitve WinDBG v sistemu Windows 8 doživel manjše spremembe. V tem razdelku vas bomo vodili skozi namestitev iskalnika napak za oba operacijska sistema.

Namestitev programa WinDBG v sistemu Windows 8

V sistemu Windows 8 je WinDBG vključen v komplet gonilnikov za Windows (WDK). Namestite lahko Visual Studio in WDK ali pa ločeno namestite paket Debugging Tools za Windows 8.1, ki vključuje WinDBG.

Namestitveni program vas bo vprašal, ali želite WinDBG namestiti lokalno ali prenesti celoten paket razvijalcev za drug računalnik. Slednji je v bistvu enakovreden namestitvenemu programu za uporabo brez povezave, kar je super, če želite paket v prihodnosti namestiti na druge sisteme.

Slika 1: Izbira vrste namestitve

V naslednjem oknu morate počistiti vse elemente razen "Orodja za odpravljanje napak za Windows" in kliknite gumb "Prenesi".

Takoj, ko namestitveni program konča svoje delo, pojdite v imenik, kjer je bil paket naložen (privzeto je to c: \ Users \ Uporabniško ime \ Downloads \ Windows Kits \ 8.1 \ StandaloneSDK) in pojdite skozi postopek namestitve.

Namestitev WinDBG na Windows 7 in starejše

Za Windows 7 in starejše je WinDBG vključen v paket Orodja za razhroščevanje za Windows, ki je vključen v SDK za Windows in .Net Framework. Prenesti morate namestitveni program, nato pa med namestitvijo izberite »Orodja za odpravljanje napak za Windows«.

Med namestitvijo v razdelku Redistributable Packages izberem možnost Orodja za razhroščevanje, da ustvarim samostojen namestitveni program, ki olajša nadaljnje namestitve.

Slika 2: Izbira možnosti namestitve za ustvarjanje samostojnega namestitvenega programa

Po končani namestitvi morate imeti namestitvene programe WinDBG za različne platforme (v imeniku c: \ Program Files \ Microsoft SDKs \ Windows \ v7.1 \ Redist \ Debugging Tools for Windows \).

Slika 3: Mapa z namestitvenimi programi WinDBG za različne platforme

Vmesnik WinDBG

Slika 4: Videz WinDBG

Takoj, ko prvič vidite videz WinDGB, boste ugotovili, da je razhroščevalnik zastrašujoče preprost. Večina funkcij WinDBG se nauči med odpravljanjem napak v postopku. Namesto da bi zapravljali čas za opis vmesnika, bomo v naslednjih razdelkih obravnavali le najpomembnejše točke.

Najosnovnejša stvar, ki jo morate vedeti o vmesniku razhroščevalnika, je ukazno okno, ki ima dve področji. Prvo področje: okno, kjer je prikazan rezultat izvajanja ukaza. Drugo področje: majhno besedilno polje za vnos ukazov.

Slika 5: Okno ukaza Command WinDBG

Simboli

V večini primerov WinDBG ne zahteva posebnih nastavitev in deluje pravilno. Ena pomembna stvar, ki jo je treba prilagoditi, so simboli. Simboli so datoteke, ki se med sestavljanjem programa ustvarijo z izvedljivo datoteko in vsebujejo informacije o odpravljanju napak (funkcije in imena spremenljivk). Podatki o odpravljanju napak vam omogočajo raziskovanje funkcionalnosti vaše aplikacije med odpravljanjem napak ali razstavljanjem. Veliko Microsoftovih komponent je sestavljenih s simboli, ki se distribuirajo prek strežnika Microsoft Symbol Server. Z ostalimi izvedljivimi datotekami ni vse tako rožnato - zelo redko so priložene datoteke z informacijami o odpravljanju napak. V večini primerov podjetja omejujejo dostop do takšnih informacij.

Če želite konfigurirati WinDBG za uporabo strežnika Microsoft Symbol Server, pojdite na File: Symbol File Path in nastavite SRV * C: \ Symbols * http: //msdl.microsoft.com/download/symbols. Seveda je malo čudno, da se zvezdice uporabljajo kot ločilo. Ko nastavite strežnik Microsoft Symbol Server, se simboli prenesejo v mapo C: \ Symbols.

Slika 6: Konfiguriranje strežnika Microsoft Symbol Server

WinDBG bo po potrebi samodejno naložil simbole za binarne datoteke. Dodate lahko tudi svojo mapo simbolov, na primer:

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

Dodajanje simbolov med odpravljanjem napak

Če morate med odpravljanjem napak uvoziti simbole, lahko to storite z .sympath (ko se povežete s procesom, se prikaže ukazno okno). Če želite na primer dodati mapo c: \ SomeOtherSymbolFolder, vnesite naslednji ukaz:

0: 025> .sympath + c: \ SomeOtherSymbolFolder
Iskalna pot simbolov je: SRV * C: \ Symbols * http: //msdl.microsoft.com/download/symbols; c: \ SomeOtherSymbolFolder
Razširjena iskalna pot simbolov je: srv * c: \ symbols * http: //msdl.microsoft.com/download/symbols; c: \ someothersymbolfolder

Po dodajanju ali spreminjanju poti ne bo odveč, če simbole znova naložite:

0: 025> .naloži znova
Ponovno nalaganje trenutnih modulov
................................................................
...............................................

Preverjanje naloženih simbolov

Če želite videti, kateri moduli imajo naložene simbole, lahko uporabite ukaz x *! Čeprav WinDBG nalaga samo simbole po potrebi, je x *! bo prikazal simbole, ki jih je mogoče naložiti. Nalaganje simbolov lahko vsilite z ukazom ld * (to lahko traja nekaj časa, postopek pa lahko ustavite tako, da odprete Debug: Break).

Zdaj lahko vidimo simbole za vsak modul.

Slika 8: Seznam simbolov

Odpravljanje napak v lokalnem procesu

Pri odpravljanju napak v lokalnem procesu imate dve poti:

  1. Priključite že izvajani postopek.
  2. Zaženite postopek prek WinDBG.

Vsaka metoda ima svoje prednosti in slabosti. Če na primer program zaženete prek WinDBG, imate na voljo nekaj posebnih možnosti za odpravljanje napak (na primer odpravljanje napak v kupu), ki lahko zrušijo aplikacijo. Po drugi strani pa obstajajo tudi programi, ki se zrušijo, ko nanje priključite iskalnik napak. Nekatere aplikacije (zlasti zlonamerna programska oprema) med zagonom preverijo prisotnost razhroščevalnika v sistemu in se je zato v tem primeru smiselno držati že izvajanega procesa. Včasih se odpravi napaka pri storitvi v sistemu Windows, ki med zagonom nastavi nekatere parametre, zato je za poenostavitev postopka odpravljanja napak bolje, da se priklopite na tekoči postopek, namesto da storitev zaženete prek razhroščevalnika. Nekateri trdijo, da ima izvajanje postopka v razhroščevalniku resne učinke. Skratka, poskusite oboje in izberite tisto, kar vam najbolj ustreza. Če iz nekega razloga imate raje določeno metodo, delite svoje misli v komentarjih!

Začetek procesa

Če odpravljate napake pri samostojni aplikaciji, ki se izvaja lokalno in ni v omrežju, jo boste morda želeli zagnati prek WinDBG. Vendar to ne pomeni, da se ne morete povezati z že izvajanim procesom. Izberite način, ki vam najbolj ustreza.

Začetek postopka ni težko. Pojdite na "Datoteka: Odpri izvršljivo datoteko" in izberite izvedljivo datoteko, ki jo želite odpraviti. Podate lahko tudi argumente ali nastavite začetni imenik:

Slika 9: Izbira izvedljive datoteke za odpravljanje napak

Povezava s procesom

Vzpostavitev povezave z že izvajanim procesom ni težavna. Upoštevajte pa, da lahko v nekaterih primerih traja nekaj časa, da najdete natančen postopek, ki ga želite odpraviti. Na primer, nekateri brskalniki ustvarijo en nadrejeni proces in nato še več procesov za vsak zavihek. Odvisno od odpada, pri katerem odpravljate napake, se boste morda želeli povezati ne s starševskim procesom, ampak s procesom, povezanim z zavihkom.

Če se želite povezati z že izvajanim procesom, pojdite na "File: Attach to a Process" in nato izberite PID ali ime procesa. Ne pozabite, da morate za začetek postopka imeti ustrezne pravice.

Slika 10: Izbira postopka za priključitev

Če je aplikacija po vzpostavitvi povezave prekinila delo, lahko uporabite način »Noninvaise«, tako da potrdite ustrezno potrditveno polje.

Odpravljanje napak v oddaljenem procesu

Včasih boste morda morali odpraviti napake v procesu na oddaljenem sistemu. To bi bilo veliko bolj priročno, če bi to naredili z lokalnim razhroščevalnikom, namesto da bi uporabljali navidezni stroj ali RDP. Ali pa morda odpravljate napake v procesu LoginUI.exe, ki je na voljo le, ko je sistem zaklenjen. V takih situacijah lahko uporabite lokalno različico WinDBG in se na daljavo povežete s procesi. Obstajata dva najpogostejša načina za izvajanje teh nalog.

Obstoječe seje za odpravljanje napak

Če ste že začeli odpravljati napake v svojem programu lokalno (s povezovanjem ali zagonom procesa prek WinDBG), lahko vnesete določen ukaz in WinDBG bo zagnal poslušalca, na katerega se lahko poveže oddaljeni razhroščevalnik. Če želite to narediti, uporabite ukaz .server:

Strežnik tcp: vrata = 5005

Ko zaženete zgornji ukaz, se lahko prikaže takšno opozorilo:

Slika 11: Opozorilo, ki se lahko prikaže po zagonu ukaza za ustvarjanje »poslušalca«

Nato bo WinDBG poročal, da strežnik deluje:

0: 005> .server tcp: port = 5005
0: -daljinski tcp: vrata = 5005, strežnik = uporabniški računalnik

Zdaj se lahko povežete z oddaljenega gostitelja na obstoječo sejo za odpravljanje napak, tako da odprete "Datoteka: Poveži se z oddaljeno sejo" in v besedilno polje vnesite nekaj takega: tcp: Port = 5005, Server = 192.168.127.138

Slika 12: Oddaljena povezava s sejo za odpravljanje napak

Ko se povežete, boste na oddaljenem odjemalcu prejeli potrditev:


Strežnik se je zagnal. Naročnik se lahko poveže s katero koli od teh ukaznih vrstic
0: -daljinski tcp: vrata = 5005, strežnik = uporabniški računalnik
MACHINENAME \ User (tcp 192.168.127.138:13334) povezano na Pon Dec 16 09:03:03 2013

in sporočilo za lokalna različica razhroščevalnik:

MACHINENAME \ User (tcp 192.168.127.138:13334) povezano na Pon Dec 16 09:03:03 2013

Ustvarjanje oddaljenega strežnika

Z WinDBG lahko ustvarite tudi ločen strežnik, se na daljavo povežete z njim in izberete postopek za odpravljanje napak. To lahko storite z datoteko dbgsrv.exe, kjer nameravate odpraviti napake v procesih. Če želite zagnati tak strežnik, zaženite naslednji ukaz:

dbgsrv.exe -t tcp: vrata = 5005

Slika 13: Zagon oddaljenega strežnika

Ponovno boste morda prejeli varnostno opozorilo, ki ga morate sprejeti:

Slika 14: Varnostno sporočilo, ki se lahko pojavi med zagonom strežnika za odpravljanje napak

Na strežnik za odpravljanje napak se lahko povežete, če odprete datoteko »Datoteka: Poveži se z oddaljeno škrbino« in v besedilno polje vnesete naslednjo vrstico: tcp: Vrata = 5005, Strežnik = 192.168.127.138

Slika 15: Povezovanje s strežnikom za odpravljanje napak

Po povezavi ne boste prejemali nobenih signalov, ki ste jih povezali, če pa odprete "Datoteka: Pripni v proces", boste videli seznam procesov strežnika za odpravljanje napak (kjer se izvaja dbgsrv.exe). Zdaj se lahko na postopek vključite, kot da bi to počeli lokalno.

Sistem pomoči

Sistem pomoči v WinDBG je odličen. Poleg tega, da se naučite nekaj novega, bi morali dobiti tudi osnovne informacije o ukazu. Za dostop do pomoči WinDBG uporabite ukaz .hh:

Prav tako lahko dobite informacije o pomoči za določen ukaz. Na primer, če želite pomoč pri ukazu .reload, uporabite naslednji ukaz:

windbg> .hh .reload

Ali pa pojdite na razdelek Pomoč: Vsebina.

Moduli

Med izvajanjem programa se uvažajo različni moduli, ki zagotavljajo funkcionalnost aplikacije. Če torej veste, katere module uvozi aplikacija, lahko bolje razumete, kako deluje. V mnogih primerih boste odpravljali napake v določenem modulu, ki ga je naložil program, in ne same izvedljive datoteke.

Po povezavi s postopkom bo WinDBG samodejno prikazal naložene module. Na primer, spodnji moduli so prikazani, ko se povežem s calc.exe:

Microsoft (R) Windows Debugger različica 6.12.0002.633 X86
Avtorske pravice (c) Microsoft Corporation. Vse pravice pridržane.

*** počakaj s čakajočo prilogo
Iskalna pot simbolov je: SRV * C: \ Simboli * http: //msdl.microsoft.com/download/symbols
Izvedljiva pot iskanja 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

Kasneje v postopku odpravljanja napak lahko ta seznam znova prikažete z ukazom lmf:

0: 005> lmf
ime začetnega končnega modula
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 UxTema 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 VERZIJA 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 777ba000 LPK C: \ Windows \ system32 \ LPK.dll
777c0000 77860000 ADVAPI32 C: \ Windows \ system32 \ ADVAPI32.dll

Naslov za prenos določenega modula lahko izveste tudi z ukazom "lmf m":

0: 005> lmf m jedro32
ime začetnega končnega modula
77550000 77624000 kernel32 C: \ Windows \ system32 \ kernel32.dll

Podatke o glavi slike določenega modula lahko dobite tudi z uporabo! Dh ( Klicaj označuje razširitev):

0: 005>! Dh jedro32

Vrsta datoteke: DLL
Vrednosti glave datoteke
14C stroj (i386)
4 število odsekov
4A5BDAAD žig datumskega datuma pon 13. julij 21:09:01 2009

0 kazalec datoteke na tabelo simbolov
0 število simbolov
E0 velikost izbirne glave
2102 značilnosti
Izvršljivo
32 -bitni besedilni stroj
DLL

NEOBVEZNE VREDNOSTI GLAVE
10B magic #
9.00 različica povezovalnika
Koda C4600
C800 velikost inicializiranih podatkov
0 velikost neinicializiranih podatkov
510C5 naslov vstopne točke
1000 osnove kode
----- novo -----
77550000 osnova slike
Poravnava odsekov 1000
200 poravnava datotek
3 podsistem (uporabniški vmesnik Windows)
Različica operacijskega sistema 6.01
6.01 različica slike
Različica podsistema 6.01
D4000 velikost slike
Velikost glave 800
D5597 kontrolna vsota
00040000 velikost rezervnega sklada
00001000 velikost sklada sklada
00100000 velikost rezerve kupov
00001000 velikost predaje kupe
140 lastnosti DLL
Dinamična podlaga
Združljivo z NX
B4DA8 [A915] naslov izvoznega imenika
BF6C0 [1F4] naslov uvoznega imenika
C7000 [520] naslov imenika virov
0 [0] naslov imenika izjem
0 [0] naslov varnostnega imenika
C8000 [B098] naslov imenika za selitev baze
C5460 [38] naslov imenika za odpravljanje napak
0 [0] naslov imenika opisov
0 [0] naslov posebnega imenika
0 [0] naslov imenika shranjevanja niti
816B8 [40] naslov Load Configuration Directory
278 [408] naslov imenika vezanega uvoza
1000 [DE8] naslov imenika tabel uvoznih naslovov
0 [0] naslov imenika odloženega uvoza
0 [0] naslov imenika naslovov COR20
0 [0] naslov Rezerviranega imenika

GLAVA ODDELKA # 1
.text name
C44C1 navidezna velikost
1000 virtualnih naslovov
C4600 velikost neobdelanih podatkov
800 datotečni kazalec na surove podatke

0 število selitev
0 število številk vrstic
60000020 zastav
Koda
(poravnava ni določena)
Izvedite branje

Odpravljanje napak v imenikih (2)
Vnesite velikost Naslov kazalec
cv 25 c549c c4c9c Oblika: RSDS, guide, 2, kernel32.pdb
(10) 4 c5498 c4c98

GLAVA ODDELKA # 2
.podatkovno ime
Virtualna velikost FEC
Navidezni naslov C6000
E00 velikost neobdelanih podatkov
Kazalec datoteke C4E00 na surove podatke
0 kazalec datoteke na tabelo za premestitev
0 kazalec datoteke na številke vrstic
0 število selitev
0 število številk vrstic
Zastave C0000040
Začetni podatki
(poravnava ni določena)
Brati, pisati

GLAVA ODDELKOV # 3
.rsrc ime
520 virtualne velikosti
Navidezni naslov C7000
600 velikosti surovih podatkov
Kazalec datoteke C5C00 na surove podatke
0 kazalec datoteke na tabelo za premestitev
0 kazalec datoteke na številke vrstic
0 število selitev
0 število številk vrstic
40000040 zastav
Začetni podatki
(poravnava ni določena)
Le za branje

GLAVA ODDELKOV # 4
.reloc ime
B098 navidezna velikost
Navidezni naslov C8000
B200 velikost neobdelanih podatkov
Kazalec datoteke C6200 na surove podatke
0 kazalec datoteke na tabelo za premestitev
0 kazalec datoteke na številke vrstic
0 število selitev
0 število številk vrstic
42000040 zastav
Začetni podatki
Ni mogoče prodati
(poravnava ni določena)
Le za branje

Sporočila in izjeme

Po povezavi s procesom se najprej prikaže seznam modulov, nato pa se lahko pojavijo druga sporočila. Ko se na primer oklepamo calc.exe, WinDBG samodejno nastavi točko preloma (kar je samo oznaka, ki se uporablja za ustavitev aplikacije). Prikažejo se informacije o prelomni točki:

(da8.b44): Izjema navodil za prekinitev - koda 80000003 (prva priložnost)

To sporočilo je izjema, in sicer izjema prve možnosti. V bistvu je izjema poseben pogoj, ki se pojavi med izvajanjem programa. Izjema prve možnosti pomeni, da se je program ustavil takoj po uvedbi izjeme. Izjema druge možnosti pomeni, da bodo po izjemi izvedene nekatere operacije, nato pa bo program prenehal delovati.

Registri

Ko prikaže sporočila in izjeme, razhroščevalnik natisne stanje registrov procesorja. Registri so posebne spremenljivke v procesorju, ki shranjujejo majhne koščke informacij ali spremljajo stanje nečesa v pomnilniku. Procesor lahko zelo hitro obdeluje informacije v teh registrih. To je veliko hitreje kot vsakokratno pridobivanje informacij o vodilu iz RAM -a.

Po povezavi s calc.exe WinDBG samodejno prikaže podatke o naslednjih registrih:

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

Kasneje lahko te podatke znova podvojite z ukazom 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 navzgor ei pl zr na pe nc
cs = 001b ss = 0023 ds = 0023 es = 0023 fs = 003b gs = 0000 efl = 00000246
ntdll! DbgBreakPoint:
77663540 cc int 3

Če želimo dobiti vrednost določenega registra, lahko izvedemo naslednji ukaz:

0: 005> r eax
eax = 7ffd9000

Podatke iz več registrov hkrati je mogoče pridobiti na naslednji način:

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

Kazalec na navodila

Zadnji ukaz je namenjen izvedljivim navodilom. Tu so na zaslonu prikazane informacije, kot v primeru ukaza r, o tem, kaj vsebuje register EIP. EIP je register, ki vsebuje lokacijo naslednjega ukaza, ki ga mora procesor izvesti. Prikaz WinDBG je enakovreden ukazu u eip L1, po katerem WinDBG odide na naslov, naveden v registru EIP, ta razdelek pretvori v kodo montaže in ga prikaže na zaslonu.

ntdll! DbgBreakPoint:
77663540 cc int 3

ostati v stiku

V prihodnjih člankih bomo pogledali, kako uporabljati WinDBG v okolju v živo: prelomne točke, postopno odpravljanje napak in skeniranje pomnilnika. Ne preklapljajte! J.

Te vrste napak so običajno povezane z napačnim gonilnikom, kar je težko izračunati. Vendar pa vas lahko izboljšani sistem za sledenje hroščem v sistemu Windows Vista (in ne le v sistemu Vista!) Pogosto pripelje do problematične datoteke. Posledično se večina ljudi neumno trudi delati na nestabilnem računalniku, shranjuje dokumente s paranoično pravilnostjo in upa v najboljše.

Ob Windows se zruši običajno se ustvari tako imenovani "pomnilnik". Slednje je mogoče raziskati z brezplačnim iskalnikom napak Orodje za Windows Orodja za odpravljanje napak, ki vas lahko usmerijo do vira težave. Zato morate le:

Prenesite si orodje za odpravljanje napak

Orodja za odpravljanje napak Windows lahko prenesete neposredno s Microsoftovega spletnega mesta. Program deluje z različnimi operacijskimi sistemi od Windows NT 4 do Windows 2008, zato z njim ne bi smelo biti težav. Da, ni mogoče reči, da je stabilen v sistemu Windows 7 RC, vendar po naših testih še vedno deluje. Zato je lahko celo poskus diagnosticiranja težave iz sistema Windows 7 RC uspešen.

Konfigurirajte svoj sistem

Med zrušitvami mora računalnik ustvariti odlagališča pomnilnika, ki bodo kasneje služila kot vir informacij za razhroščevalnik. Zato je pomembno, da je Windows konfiguriran za ustvarjanje izpisov. Če želite prilagoditi operacijski sistem, kliknite desni klik z miško na računalniku (Računalnik) in izberite Lastnosti (Lastnosti). Nato kliknite zavihek Napredne sistemske nastavitve, poiščite pododdelek Nastavitve ob zagonu in obnovitvi ter se prepričajte, da je parameter Zapis informacij o odpravljanju napak nastavljen na Izpis pomnilnika jedra) ali Popoln izpis pomnilnika.

Nato kliknite Start, pojdite na Vsi programi, izberite Orodja za odpravljanje napak in zaženite WinDbg. V programu pojdite v meni Datoteka in izberite Pot do datoteke simbola ... Nato v okno, ki se odpre, vnesite naslednjo vrstico:

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

Slednji določa pot do posebnih podatkov - tako imenovanih "simbolov", ki lahko pripomočku za odpravljanje napak odkrijejo vašo napačno datoteko.

Ko vnesete vrstico, kliknite gumb V redu. Kasneje bo pri delu z razhroščevalnikom ta vrstica prenesla simbole z msdl.microsoft.com in jih shranila v mapo c: \ symbols.

Rešite svojo težavo

Zdaj počakajte na naslednjo zrušitev z modrim zaslonom in poznejši dokončanje ponovnega zagona računalnika. Nato znova zaženite WinDbg (uporabniki sistema Vista morajo program zagnati kot skrbnik), kliknite meni Datoteka, izberite Odpri dump zrušitve, odprite datoteko \ Windows \ MEMORY.DMP in program jo bo takoj začel analizirati.

Na žalost WinDbg ponuja zelo malo informacij o tem, kaj počne, zato lahko celo mislite, da je program zamrznjen. Vendar počakajte. Razumejte, analiza, recimo, 4 GB pomnilnika na ne zelo zmogljivem računalniku lahko traja nekaj časa, do ur. Zato bodite potrpežljivi in ​​analizo je bolje pustiti čez noč.

Vendar pa je običajno rezultat dosežen v nekaj minutah. To dokazuje vrstica analizatorja napake Bugcheck Analysis, ki poroča o nečem podobnem "Verjetno povzroča: UACReplace.sys". V prevodu v ruščino to pomeni, da težavo morda povzroča datoteka UACReplace.sys. Vnesite ga v iskalno vrstico, kot je Google, in ugotovili boste njegov pravi izvor. Še posebej, če pripada enemu od programov, ki ste jih namestili oz nameščen gonilnik potem jo lahko samo poskusite posodobiti. Morda bo to rešilo vaše težave.

Moram reči, da občasno WinDbg datoteke sploh ne more poimenovati ali pa preprosto izbere enega od DLL -jev sistema Windows. Če se vam je to zgodilo, kliknite na ukazno okno nad vrstico stanja in vnesite ukaz:

Nato pritisnite Enter. Tako boste dobili podrobnejše poročilo, ki lahko vsebuje informacije o možnih vzrokih za vaše težave.

Če tokrat nimate sreče, ne obupajte. Odpravljanje napak je precej težko, tudi za strokovnjake. Zato zaprite WinDbg in po naslednjem zrušitvi znova zaženite analizator. Morda vam bo to dalo več informacij. Vso srečo!