WinDBG:n asennus ja konfigurointi muistivedosten analysointia varten. Windowsin virheenkorjaustyökalut: BSOD-virheenkorjaustyökalujen diagnosointi ja korjaaminen Windows-käyttöön

Kun tapahtuu kriittinen vika, Windows-käyttöjärjestelmä kaatuu ja näyttää Blue Screen of Death (BSOD) -ilmoituksen. Sisältö RAM-muisti ja kaikki tiedot tapahtuneesta virheestä kirjoitetaan swap-tiedostoon. Seuraavalla kerralla Windowsin käynnistystä kaatopaikka luodaan c virheenkorjaustiedot tallennettujen tietojen perusteella. Järjestelmän tapahtumalokiin luodaan kriittinen virhemerkintä.

Huomio! Kaatumisvetoa ei luoda, jos levyalijärjestelmä epäonnistuu tai jos Windowsin käynnistyksen alkuvaiheessa tapahtuu kriittinen virhe.

Windowsin kaatumisvedosten tyypit

Käytä esimerkkinä nykyistä käyttöjärjestelmää Windows 10 ( Windows Server 2016) harkitse tärkeimpiä muistivedostyyppejä, joita järjestelmä voi luoda:

  • Pieni muistin tyhjennys(256 kt). Tämä tiedostotyyppi sisältää vain vähän tietoa. Se sisältää vain BSOD-virhesanoman, tiedot ohjaimista, prosesseista, jotka olivat aktiivisia kaatumisen aikaan, ja mikä prosessi tai ydinsäie aiheutti kaatumisen.
  • Ytimen muistivedos. Tyypillisesti pienikokoinen – kolmasosa fyysisen muistin koosta. Ytimen muistivedos on yksityiskohtaisempi kuin minivedos. Se sisältää tietoja ohjaimista ja ydintilan ohjelmista, sisältää Windows-ytimelle ja laitteiston abstraktiokerrokselle (HAL) varatun muistin sekä ohjaimille ja muille ydintilan ohjelmille varatun muistin.
  • Täydellinen muistin tyhjennys. Suurin koko ja vaatii muistia, joka vastaa järjestelmäsi RAM-muistia sekä 1 Mt, jonka Windows tarvitsee tämän tiedoston luomiseen.
  • Automaattinen muistin tyhjennys. Tietojen suhteen vastaa ytimen muistivedoskirjaa. Ainoa ero on siinä, kuinka paljon tilaa se käyttää vedostiedoston luomiseen. Tätä tiedostotyyppiä ei ollut Windows 7:ssä. Se lisättiin Windows 8:aan.
  • Aktiivinen muistivedos. Tämä tyyppi poistaa elementit, jotka eivät voi määrittää järjestelmävian syytä. Tämä lisättiin Windows 10:een, ja se on erityisen hyödyllinen, jos käytät virtuaalikonetta tai jos järjestelmäsi on Hyper-V-isäntä.

Kuinka ottaa muistin tyhjennys käyttöön Windowsissa?

Avaa järjestelmäasetusikkuna Win+Pause-näppäimellä ja valitse " Lisävaihtoehdot järjestelmät"(Järjestelmän lisäasetukset). " Lisäksi" (Lisäasetukset), osio "" (Käynnistys ja palautus) napsauta painiketta " Vaihtoehdot"(Asetukset). Määritä avautuvassa ikkunassa toimet, jotka suoritetaan, kun järjestelmä epäonnistuu. Tarkista " Kirjaa tapahtumat järjestelmälokiin" (Kirjoita tapahtuma järjestelmälokiin), valitse vedostyyppi, joka luodaan, kun järjestelmä kaatuu. Jos valintaruudussa " Korvaa olemassa oleva vedostiedosto"(Korvaa olemassa oleva tiedosto) valitse ruutu, tiedosto korvataan aina, kun ilmenee vika. On parempi poistaa tämän ruudun valinta, niin sinulla on enemmän tietoa analysointia varten. Poista myös Automaattinen uudelleenkäynnistys käytöstä.

Useimmissa tapauksissa pieni muistivedos riittää analysoimaan BSOD:n syytä.

Nyt, kun BSOD tapahtuu, voit analysoida vedostiedoston ja löytää vian syyn. Minivedos tallennetaan oletuksena %systemroot%\minidump-kansioon. Suosittelen ohjelman käyttöä vedostiedoston analysoimiseksi WinDBG(Microsoft Kernel Debugger).

WinDBG:n asentaminen Windowsiin

Apuohjelma WinDBG mukana " Windows 10 SDK"(Windows 10 SDK). .

Tiedostoa kutsutaan winsdksetup.exe, koko 1,3 MB.

Suorita asennus ja valitse mitä haluat tehdä - asenna paketti tähän tietokoneeseen tai lataa se asennettavaksi muille tietokoneille. Asennamme paketin paikalliselle tietokoneelle.

Voit asentaa koko paketin, mutta jos haluat asentaa vain virheenkorjaustyökalun, valitse Vianetsintätyökalut Windowsille.

Asennuksen jälkeen WinDBG-pikakuvakkeet löytyvät aloitusvalikosta.

.dmp-tiedostojen yhdistämisen määrittäminen WinDBG:n kanssa

Dump-tiedostojen avaaminen yksinkertaisella napsautuksella, yhdistä .dmp-laajennus WinDBG-apuohjelmaan.

  1. Avata komentorivi järjestelmänvalvojana ja suorita komennot 64-bittiselle järjestelmälle: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe –IA
    32-bittiselle järjestelmälle:
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. Tämän seurauksena tiedostotyypit: .DMP, .HDMP, .MDMP, .KDMP, .WEW yhdistetään WinDBG:hen.

Vianetsintäsymbolipalvelimen määrittäminen WinDBG:ssä

Virheenkorjaussymbolit (virheenkorjaussymbolit tai symbolitiedostot) ovat tietolohkoja, jotka syntyvät ohjelman kääntämisen aikana yhdessä suoritettavan tiedoston kanssa. Tällaiset tietolohkot sisältävät tietoa muuttujien nimistä, joita kutsutaan funktioiksi, kirjastoiksi jne. Näitä tietoja ei tarvita ohjelmaa suoritettaessa, mutta niistä on hyötyä virheenkorjauksessa. Microsoftin komponentit on koottu symboleilla, jotka jaetaan Microsoft Symbol Serverin kautta.

Määritä WinDBG Microsoftin käyttö Symbolipalvelin:

  • Avaa WinDBG;
  • Siirry valikkoon Tiedosto –> Symbolitiedostopolku;
  • Kirjoita rivi, joka sisältää URL-osoitteen virheenkorjaussymbolien lataamista varten Microsoftin verkkosivustolta ja kansio välimuistin tallentamista varten: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols Esimerkissä välimuisti ladataan E:\Sym_WinDBG-kansioon, voit merkitä minkä tahansa.
  • Muista tallentaa valikon muutokset Tiedosto–>Tallenna työtilaa;

WinDBG etsii symboleja paikallisesta kansiosta ja jos se ei löydä tarvittavia symboleja siitä, se lataa symbolit automaattisesti määritetystä sivustosta. Jos haluat lisätä oman symbolikansiosi, voit tehdä sen seuraavasti:

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

Jos sinulla ei ole Internet-yhteyttä, lataa ensin symbolipaketti Windowsin symbolipaketit-resurssista.

WinDBG:n törmäysvedosten analyysi

WinDBG-debuggeri avaa vedostiedoston ja lataa virheenkorjaukseen tarvittavat symbolit paikallisesta kansiosta tai Internetistä. Et voi käyttää WinDBG:tä tämän prosessin aikana. Ikkunan alareunaan (debuggerin komentoriville) tulee viesti Debugee ei yhdistetty.

Komennot syötetään ikkunan alareunassa olevalle komentoriville.

Tärkein huomioitava asia on virhekoodi, joka ilmoitetaan aina heksadesimaalimuodossa ja jolla on muoto 0xXXXXXXXXX(ilmoitettu yhdessä vaihtoehdoista - STOP: , 07/02/2019 0008F, 0x8F). Esimerkissämme virhekoodi on 0x139.

Vianetsintäohjelma tarjoaa komennon!analyze -v suorittamisen, vie hiiren osoitin linkin päälle ja napsauta. Mihin tämä käsky on tarkoitettu?

  • Se suorittaa alustavan muistivedosanalyysin ja tarjoaa yksityiskohtainen tieto aloittaaksesi analyysin.
  • Tämä komento näyttää STOP-koodin ja virheen symbolisen nimen.
  • Se näyttää kaatumiseen johtaneiden komentokutsujen pinon.
  • Lisäksi täällä näytetään IP-osoite, prosessi- ja rekisterivirheet.
  • Tiimi voi antaa valmiita suosituksia ongelman ratkaisemiseksi.

Tärkeimmät kohdat, joihin sinun tulee kiinnittää huomiota analysoinnissa komennon!analyze –v suorittamisen jälkeen (listaus epätäydellinen).

1: kd> !analyze -v


* *
* Bugcheck analyysi *
* *
*****************************************************************************
STOP-virheen symbolinen nimi (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Virheen kuvaus (Ytimen komponentti on korruptoinut kriittisen tietorakenteen. Tämä korruptio saattaa antaa hyökkääjälle mahdollisuuden saada tämä kone hallintaansa):

Ytimen komponentti on vioittunut kriittisen tietorakenteen. Korruptio saattaa antaa haitallisen käyttäjän saada tämän koneen hallintaansa.
Virheargumentit:

Argumentit:
Arg1: 0000000000000003, LIST_ENTRY on vioittunut (eli kaksoispoisto).
Arg2: ffffd0003a20d5d0, virhetarkistuksen aiheuttaneen poikkeuksen trap-kehyksen osoite
Arg3: ffffd0003a20d528, virheentarkistuksen aiheuttaneen poikkeuksen poikkeustietueen osoite
Arg4: 0000000000000000, varattu
Viankorjaustiedot:
------------------

Laskuri näyttää, kuinka monta kertaa järjestelmä kaatui samanlaisella virheellä:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

STOP-virhekoodi lyhennetyssä muodossa:

BUGCHECK_STR: 0x139

Prosessi, jonka aikana vika ilmeni (ei välttämättä virheen syy, tämä prosessi oli käynnissä muistissa juuri vian tapahtuessa):

PROCESS_NAME: sqlservr.exe

Virhekoodin kuvaus: Järjestelmä on havainnut pinopuskurin ylivuodon tässä sovelluksessa, minkä vuoksi hyökkääjä voi saada tämän sovelluksen hallintaansa.

ERROR_CODE: (NTSTATUS) 0xc0000409 - Järjestelmä havaitsi pinopohjaisen puskurin ylityksen tässä sovelluksessa. Tämä ylitys saattaa antaa haitallisen käyttäjän saada tämän sovelluksen hallintaansa.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 - Järjestelmä havaitsi pinopohjaisen puskurin ylityksen tässä sovelluksessa. Tämä ylitys saattaa antaa haitallisen käyttäjän saada tämän sovelluksen hallintaansa.

Viimeinen puhelu pinossa:

LAST_CONTROL_TRANSFER: välillä fffff8040117d6a9 paikkaan fffff8040116b0a0

Kutsupino epäonnistumisen aikana:

STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`B28:20nt!
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2: nt!xd6bpatch+
ffffd000`3a20d3f0 ffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`00000000 000000000 000000000 000000000 000000000 000000000 xd 0
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 fffff804`0000ntcurrent
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951: ?? ::FNODOBFM::`merkkijono"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000 ffffd000`3a20d9d8 ffffe001`0a34c60
ffffd000`3a20d990 fffff804`0117d313: ffffffff`ffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380:64Fintle+0txrite
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000`00000000 000000000 000000000 00000000000000000000000000000 x13
10 307da

Koodiosio, jossa virhe tapahtui:

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: Koneen omistaja

Moduulin nimi ytimen objektitaulukossa. Jos analysaattori pystyi havaitsemaan ongelmallinen kuljettaja, nimi näkyy kentissä MODULE_NAME ja IMAGE_NAME:

MODULE_NAME:nt
IMAGE_NAME: ntkrnlmp.exe

1: kd> lmvm nt
Selaa koko moduuliluetteloa
Ladattu symbolikuvatiedosto: ntkrnlmp.exe
Yhdistetty muistikuvatiedosto: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
Kuvan polku: ntkrnlmp.exe
Kuvan nimi: ntkrnlmp.exe
Sisäinen nimi: ntkrnlmp.exe
Alkuperäinen tiedostonimi: ntkrnlmp.exe
Tuoteversio: 6.3.9600.18946
Tiedoston versio: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

Annetussa esimerkissä analyysi osoitti ydintiedostoon ntkrnlmp.exe. Kun muistivedosanalyysi viittaa järjestelmäohjaimeen (kuten win32k.sys) tai ydintiedostoon (kuten esimerkissämme ntkrnlmp.exe), se on mitä todennäköisimmin Tämä tiedosto ei ole ongelman syy. Hyvin usein käy ilmi, että ongelma on laiteohjaimessa, BIOS-asetukset tai laitteen toimintahäiriö.

Jos näet, että BSOD:n aiheutti kolmannen osapuolen ohjain, sen nimi ilmoitetaan MODULE_NAME- ja IMAGE_NAME-arvoissa.

Esimerkiksi:

Kuvapolku: \SystemRoot\system32\drivers\cmudaxp.sys
Kuvan nimi: cmudaxp.sys

Avaa ohjaintiedoston ominaisuudet ja tarkista sen versio. Useimmissa tapauksissa ajureiden ongelma ratkaistaan ​​päivittämällä ne.

22. kesäkuuta 2010

Aiemmin Windbg oli ladattavissa erikseen. Mutta uusimmissa versioissa Microsoft pitää sen osana Windows SDK:ta. Löydät latauslinkit alta.

Windows 10

Windbg for Windows 7:n uusin versio voidaan ladata linkistä https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

Windows 7

Lataa asennusohjelmat yllä olevista linkeistä. Huomaa, että tämä ei lataa koko SDK:ta, se on vain asennusohjelma. Kun suoritat tiedoston, sinä pystyt valitse, mitkä työkalut haluat ladata. Jos olet kiinnostunut vain Windbg:stä, voit sulkea pois kaiken muun ja valita vain "Vianetsintätyökalut" kohdasta "Yleiset apuohjelmat"

Yllä oleva paketti asentaa windbg 6.12 -version. Jos haluat asentaa windbg:n nopeasti, voit valita vanhemman version (6.11), jonka voi ladata osoitteesta
tämän postauksen lopussa oleva linkki.

Kun olet suorittanut asennuksen, löydät ohjelman Käynnistä-valikosta -> Kaikki ohjelmat -> Vianetsintätyökalut Windowsille -> Windbg

Esittelyssä WinDBG - Osa 1

Aleksanteri Antipov

WinDBG on erinomainen debuggeri. Sillä ei ehkä ole kovin käyttäjäystävällinen käyttöliittymä, eikä siinä ole oletuksena mustaa taustaa, mutta se on yksi tehokkaimmista ja vakaimmista virheenkorjausohjelmista Windows-käyttöjärjestelmässä tällä hetkellä. Tässä artikkelissa esittelen sinulle WinDBG:n perusteet, jotta voit aloittaa sen käytön.


WinDBG on erinomainen debuggeri. Sillä ei ehkä ole kovin käyttäjäystävällinen käyttöliittymä, eikä siinä ole oletuksena mustaa taustaa, mutta se on yksi tehokkaimmista ja vakaimmista virheenkorjausohjelmista Windows-käyttöjärjestelmässä tällä hetkellä. Tässä artikkelissa esittelen sinulle WinDBG:n perusteet, jotta voit aloittaa sen käytön.

Tämä on ensimmäinen artikkeli WinDBG:lle omistetussa sarjassa. Luettelo kaikista tämän sarjan artikkeleista:

  • Osa 1 – asennus, käyttöliittymä, symbolit, etä/paikallinen virheenkorjaus, ohjejärjestelmä, moduulit, rekisterit.
  • Osa 2 – keskeytyskohdat.
  • Osa 3 – muistin tarkastus, vaiheittainen ohjelman virheenkorjaus, vinkkejä ja temppuja.

Tässä artikkelissa tarkastellaan asennusta ja prosessiin liittämistä, ja seuraavissa artikkeleissa tarkastellaan keskeytyskohtia, vaiheittaista virheenkorjausta ja muistin tarkastusta.

WinDBG:n asennus

Windows 7:ään verrattuna Windows 8:n WinDBG-asennusprosessissa on tehty pieniä muutoksia. Tässä osiossa tarkastellaan debuggerin asentamista molemmille käyttöjärjestelmät.

WinDBG:n asentaminen Windows 8:aan

Windows 8:ssa WinDBG sisältyy Windows Driver Kit (WDK) -ajuripakettiin. Voit asentaa Visual Studion ja WDK:n tai asentaa Debugging Tools for Windows 8.1 -paketin erikseen, joka sisältää WinDBG:n.

Asennusohjelma kysyy, haluatko asentaa WinDBG:n paikallisesti vai ladata koko kehityspaketin toiselle tietokoneelle. Jälkimmäinen on pohjimmiltaan vastaava offline-asennusohjelma, mikä on erittäin kätevää, jos haluat asentaa paketin muihin järjestelmiin tulevaisuudessa.

Kuva 1: Asennustyypin valitseminen

Seuraavassa ikkunassa sinun on poistettava valinnat kaikista kohteista paitsi "Debugging Tools for Windows" ja napsauta "Lataa" -painiketta.

Kun asennusohjelma on lopettanut työnsä, siirry hakemistoon, josta paketti ladattiin (oletusarvoisesti se on c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK) ja suorita asennusprosessi.

WinDBG:n asentaminen Windows 7:ään ja sitä vanhempiin käyttöjärjestelmiin

Windows 7:ssä ja aiemmissa käyttöjärjestelmissä WinDBG on osa "Debugging Tools for Windows" -pakettia, joka sisältyy Windows SDK:n ja .Net Frameworkin mukana. Sinun on ladattava asennusohjelma ja valittava "Debugging Tools for Windows" asennuksen aikana.

Asennuksen aikana valitsen "Virheenkorjaustyökalut"-vaihtoehdon "Uudelleenjakelussa olevat paketit" -kohdasta luodakseni erillisen asennusohjelman, joka helpottaa tulevia asennuksia.

Kuva 2: Asennusvaihtoehtojen valitseminen erillisen asennusohjelman luomiseksi

Kun asennus on valmis, sinulla pitäisi olla WinDBG-asennusohjelmat eri alustoille (hakemistossa c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\).

Kuva 3: Kansio WinDBG-asennusohjelmilla eri alustoille

WinDBG käyttöliittymä

Kuva 4: WinDBG:n ulkoasu

Ensimmäistä kertaa kun näet ulkomuoto WinDGB, ymmärrät, että debuggeri on pelottavan yksinkertainen. Useimmat WinDBG-toiminnot opitaan prosessin virheenkorjauksen aikana. Sen sijaan, että käyttäisimme aikaa käyttöliittymän kuvaamiseen, seuraavissa osioissa käsittelemme vain tärkeimpiä kohtia.

Perusasiallinen asia, joka sinun on tiedettävä virheenkorjausliittymästä, on komentoikkuna, joka koostuu kahdesta alueesta. Ensimmäinen alue: ikkuna, jossa näytetään komennon suorituksen tulos. Toinen alue: pieni tekstikenttä komentojen syöttämiseen.

Kuva 5: WinDBG-komentoikkuna

Symbolit

Useimmissa tapauksissa WinDBG ei vaadi erityisiä asetuksia ja toimii oikein heti. Mutta yksi tärkeä asia, joka on määritettävä, ovat hahmot. Symbolit ovat tiedostoja, jotka luodaan yhdessä suoritettavan tiedoston kanssa, kun ohjelmaa käännetään ja jotka sisältävät virheenkorjaustietoja (funktioita ja muuttujien nimiä). Virheenkorjaustietojen avulla voit tutkia sovelluksen toimivuutta virheenkorjauksen tai purkamisen aikana. Monet Microsoftin komponentit on koottu symboleilla, jotka jaetaan Microsoft Symbol Serverin kautta. Muiden suoritettavien tiedostojen kanssa kaikki ei ole niin ruusuista - erittäin harvoin tiedostoja, joissa on virheenkorjaustietoja, sisällytetään sovellukseen. Useimmissa tapauksissa yritykset rajoittavat pääsyä tällaisiin tietoihin.

Voit määrittää WinDBG:n käyttämään Microsoft Symbol Serveriä siirtymällä kohtaan File:Symbol File Path ja määrittämällä poluksi SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. Tietysti on hieman outoa, että tähtiä käytetään erottimena. Kun olet määrittänyt Microsoft Symbol Serverin, symbolit ladataan C:\Symbols-kansioon.

Kuva 6: Microsoft Symbol Serverin määrittäminen

WinDBG lataa automaattisesti symbolit binääritiedostoille tarvittaessa. Voit myös lisätä oman symbolikansiosi, kuten näin:

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

Symbolien lisääminen virheenkorjauksen aikana

Jos sinun on tuotava symboleja virheenkorjauksen aikana, voit tehdä sen käyttämällä .sympath-komentoa (komentoikkuna tulee näkyviin, kun kytket prosessiin). Jos haluat esimerkiksi lisätä c:\SomeOtherSymbolFolder-kansion, anna seuraava komento:

0:025> .sympath+ c:\SomeOtherSymbolFolder
Symbolien hakupolku on: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
Laajennettu symbolien hakupolku on: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

Symbolit kannattaa ladata uudelleen polkujen lisäämisen tai muuttamisen jälkeen:

0:025> .reload
Ladataan uudelleen nykyisiä moduuleja
................................................................
...............................................

Ladattujen symbolien tarkistus

Voit nähdä, missä moduuleissa on ladattuja symboleja, käyttämällä x*!-komentoa. Vaikka WinDBG lataa symboleja vain tarpeen mukaan, x*! näyttää symbolit, jotka voidaan ladata. Voit pakottaa symbolit latautumaan komennolla ld * (tämä voi kestää hetken, ja voit pysäyttää prosessin siirtymällä kohtaan Debug:Break).

Nyt voimme nähdä kunkin moduulin symbolit.

Kuva 8: Luettelo symboleista

Paikallisen prosessin virheenkorjaus

Kun suoritat paikallisen prosessin virheenkorjausta, sinulla on kaksi vaihtoehtoa:

  1. Kytke jo käynnissä olevaan prosessiin.
  2. Aloita prosessi WinDBG:n kautta.

Jokaisella menetelmällä on omat etunsa ja haittansa. Jos esimerkiksi suoritat ohjelmaa WinDBG:n kautta, sinulla on pääsy tiettyihin virheenkorjausvaihtoehtoihin (esimerkiksi keon virheenkorjaus), jotka voivat aiheuttaa sovelluksen kaatumisen. Toisaalta on myös ohjelmia, jotka kaatuvat, kun niihin liitetään debuggeri. Jotkut sovellukset (erityisesti haittaohjelmat) tarkistavat, onko järjestelmässä debuggeri käynnistyksen aikana, ja vastaavasti tässä tapauksessa on järkevää tarttua jo käynnissä olevaan prosessiin. Joskus suoritat virheenkorjausta Windows-palvelusta, joka asettaa joitakin parametreja käynnistyksen aikana, joten virheenkorjausprosessin yksinkertaistamiseksi on myös parempi kytkeytyä käynnissä olevaan prosessiin sen sijaan, että suoritat palvelun virheenkorjausohjelman kautta. Jotkut ihmiset väittävät, että prosessin suorittaminen debuggerin kautta vaikuttaa vakavasti suorituskykyyn. Lyhyesti sanottuna, kokeile molempia ja valitse itsellesi sopivin. Jos jostain syystä pidät tietystä menetelmästä, jaa ajatuksesi kommenteissa!

Prosessin aloittaminen

Jos teet virheenkorjausta erillisestä sovelluksesta, joka toimii paikallisesti eikä kommunikoi verkon kanssa, sinun kannattaa suorittaa se WinDBG:n kautta. Tämä ei kuitenkaan tarkoita, että et voi liittyä jo käynnissä olevaan prosessiin. Valitse sinulle sopivin menetelmä.

Prosessin aloittaminen ei ole vaikeaa. Siirry kohtaan "File:Open Executable" ja valitse suoritettava tiedosto, jonka virheenkorjaus haluat tehdä. Voit myös määrittää argumentteja tai asettaa aloitushakemiston:

Kuva 9: ​​Valinta suoritettava tiedosto virheenkorjausta varten

Prosessiyhteys

Yhteyden muodostaminen jo käynnissä olevaan prosessiin ei myöskään ole vaikeaa. Muista kuitenkin, että joissakin tapauksissa saattaa kestää kauan löytääksesi tarkan prosessin, jonka haluat korjata. Jotkin selaimet esimerkiksi luovat yhden pääprosessin ja sitten useita muita prosesseja kullekin välilehdelle. Riippuen virheenjäljittämästäsi kaatumisvedosta, saatat haluta liittyä välilehteen liittyvään prosessiin pääprosessin sijaan.

Liitä jo käynnissä olevaan prosessiin siirtymällä kohtaan "Tiedosto:Liitä prosessiin" ja valitsemalla sitten prosessin PID tai nimi. Muista, että sinulla on oltava asianmukaiset oikeudet liittyäksesi prosessiin.

Kuva 10: Kytkettävän prosessin valitseminen

Jos sovellus keskeyttää toimintansa yhteyden muodostamisen jälkeen, voit käyttää "Noninvaise" -tilaa valitsemalla asianmukainen valintaruutu.

Etäprosessin virheenkorjaus

Saatat joutua joskus suorittamaan virheenkorjauksen etäjärjestelmässä. Olisi paljon kätevämpää ratkaista tämä ongelma käyttämällä paikallista virheenkorjausohjelmaa käytön sijaan virtuaalikone tai RDP. Tai ehkä yrität korjata LoginUI.exe-prosessia, joka on käytettävissä vain, kun järjestelmä on lukittu. Tällaisissa tilanteissa voit käyttää paikallista WinDBG-versiota ja muodostaa etäyhteyden prosesseihin. On kaksi yleisintä tapaa ratkaista nämä ongelmat.

Olemassa olevat virheenkorjausistunnot

Jos olet jo aloittanut ohjelman virheenkorjauksen paikallisesti (liittämällä tai suorittamalla prosessin WinDBG:n kautta), voit antaa tietyn komennon ja WinDBG käynnistää "kuuntelijan", johon etädebuggeri voi muodostaa yhteyden. Voit tehdä tämän käyttämällä .server-komentoa:

Palvelin tcp:port=5005

Yllä olevan komennon suorittamisen jälkeen saatat nähdä seuraavanlaisen varoituksen:

Kuva 11: Varoitusviesti, joka saattaa ilmestyä kuuntelijan luomiskomennon suorittamisen jälkeen

WinDBG ilmoittaa sitten, että palvelin on käynnissä:

0:005> .server tcp:port=5005
0: -remote tcp:Portti=5005,Palvelin=KÄYTTÄJÄ-PC

Voit nyt muodostaa yhteyden etäisännästä olemassa olevaan virheenkorjausistuntoon siirtymällä kohtaan "Tiedosto:Yhdistä etäistuntoon" ja kirjoittamalla tekstikenttään jotain seuraavan kaltaista: tcp:Port=5005,Server=192.168.127.138

Kuva 12: Etäyhteys virheenkorjausistuntoon

Kun yhteys on muodostettu, saat vahvistuksen etäasiakkaalle:


Palvelin käynnistyi. Asiakas voi muodostaa yhteyden mihin tahansa näistä komentoriveistä
0: -remote tcp:Portti=5005,Palvelin=KÄYTTÄJÄ-PC
MACHINENAME\User (tcp 192.168.127.138:13334) yhdistetty ma 16. joulukuuta 09:03:03 2013

ja virheenkorjausohjelman paikallisen version viesti:

MACHINENAME\User (tcp 192.168.127.138:13334) yhdistetty ma 16. joulukuuta 09:03:03 2013

Etäpalvelimen luominen

Voit myös luoda erillisen palvelimen WinDBG:llä, muodostaa yhteyden siihen etäyhteyden kautta ja valita prosessin virheenkorjausta varten. Tämä voidaan tehdä käyttämällä dbgsrv.exe-tiedostoa, jossa aiot korjata prosesseja. Käynnistä tällainen palvelin suorittamalla seuraava komento:

dbgsrv.exe -t tcp:port=5005

Kuva 13: Etäpalvelimen käynnistäminen

Saatat saada jälleen turvavaroituksen, joka sinun tulee hyväksyä:

Kuva 14: Suojausviesti, joka saattaa ilmestyä virheenkorjauspalvelimen käynnistyksen aikana

Voit muodostaa yhteyden virheenkorjauspalvelimeen siirtymällä kohtaan File: Connect to Remote Stub ja kirjoittamalla seuraavan rivin tekstikenttään: tcp:Portti=5005,Palvelin=192.168.127.138

Kuva 15: Yhteyden muodostaminen virheenkorjauspalvelimeen

Kun olet muodostanut yhteyden, et saa signaaleja yhteyden muodostamisesta, mutta jos siirryt kohtaan "Tiedosto:Liitä prosessiin", näet luettelon vi(missä dbgsrv.exe on käynnissä). Nyt voit liittyä prosessiin ikään kuin tekisit sen paikallisesti.

Apujärjestelmä

WinDBG:n apujärjestelmä on loistava. Uuden oppimisen lisäksi sinun pitäisi pystyä saamaan taustatietoa komennosta. Käytä .hh-komentoa päästäksesi WinDBG-ohjeeseen:

Voit myös saada ohjetietoja tiettyä komentoa varten. Jos haluat esimerkiksi saada apua .reload-komennon kanssa, käytä seuraavaa komentoa:

windbg> .hh .reload

Tai mene vain Ohje: Sisältö -osioon.

Moduulit

Kun ohjelma on käynnissä, useita moduuleja tuodaan tarjoamaan sovelluksen toimintoja. Siksi, jos tiedät, mitkä moduulit sovellus tuo, voit ymmärtää paremmin, miten se toimii. Monissa tapauksissa teet virheenkorjauksen ohjelman lataamasta moduulista itse suoritettavan tiedoston sijaan.

Kun WinDBG on liitetty prosessiin, se näyttää automaattisesti ladatut moduulit. Esimerkiksi alla ovat moduulit sen jälkeen, kun olen muodostanut yhteyden calc.exe-tiedostoon:

Microsoft (R) Windows Debuggerin versio 6.12.0002.633 X86
Tekijänoikeus (c) Microsoft Corporation. Kaikki oikeudet pidätetään.

*** odota odottavalla liitteellä
Symbolien hakupolku on: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
Suoritettava hakupolku on:
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

Myöhemmin virheenkorjausprosessin aikana voit näyttää tämän luettelon uudelleen käyttämällä lmf-komentoa:

0:005>lmf
alku loppu moduulin nimi
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 VERSIO 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

Voit myös selvittää tietyn moduulin latausosoitteen "lmf m" -komennolla:

0:005> lmf m kernel32
alku loppu moduulin nimi
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll

Voit myös saada tietoa tietyn moduulin kuvaotsikosta käyttämällä!dh-laajennusta ( Huutomerkki tarkoittaa laajennusta):

0:005> !dh kernel32

Tiedostotyyppi: DLL
TIEDOSTOJEN OTSAKKEEN ARVOT
14C-kone (i386)
4 osien lukumäärää
4A5BDAAD aika päivämääräleima ma heinäkuu 13 21:09:01 2009

0 tiedostoosoitin symbolitaulukkoon
0 symbolien määrä
Valinnaisen otsikon koko E0
2102 ominaisuudet
Suoritettava
32-bittinen sanakone
DLL

VALINNAISET OTSIKKEEN ARVOT
10B taikuutta #
9.00 linker-versio
Koodin koko C4600
Alustetun tiedon koko C800
0 alustamattomien tietojen koko
510C5 sisääntulopisteen osoite
1000 peruskoodi
----- Uusi -----
77550000 kuvakanta
1000 osien kohdistus
200 tiedoston tasaus
3 alajärjestelmä (Windows CUI)
6.01 käyttöjärjestelmän versio
6.01 kuvaversio
6.01 alijärjestelmän versio
Kuvan koko D4000
800 kokoa otsikoita
D5597 tarkistussumma
00040000 pinoreservin koko
00001000 pinon sitomisen koko
00100000 kasavarannon koko
00001000 kasan sitoutumisen koko
140 DLL-ominaisuudet
Dynaaminen pohja
NX yhteensopiva
B4DA8 [ A915] vientihakemiston osoite
BF6C0 [ 1F4] tuontihakemiston osoite
C7000 [520] resurssihakemiston osoite
0 [ 0] Poikkeushakemiston osoite
0 [ 0] suojaushakemiston osoite
C8000 [B098] tukikohdan siirtohakemiston osoite
C5460 [ 38] Debug Directory -osoite
0 [ 0] Kuvaushakemiston osoite
0 [ 0] erikoishakemiston osoite
0 [ 0] säikeen tallennushakemiston osoite
816B8 [ 40] Load Configuration Directory -osoite
278 [408] sidotun tuontihakemiston osoite
1000 [DE8] tuontiosoitetaulukkohakemiston osoite
0 [ 0] Delay Import Directory -hakemiston osoite
0 [ 0] COR20-otsikkohakemiston osoite
0 [ 0] varatun hakemiston osoite

OSIOOTSIKO #1
.tekstinimi
C44C1 virtuaalinen koko
1000 virtuaalista osoitetta
Raakatietojen koko C4600
800 tiedostoosoitin raakadataan

0 määrä siirtoja
0 rivinumeroiden määrä
60000020 lippua
Koodi
(ei tasausta määritetty)
Suorita Read

Virheenkorjaushakemistot(2)
Kirjoita koko Osoiteosoitin
cv 25 c549c c4c9c Muoto: RSDS, guid, 2, kernel32.pdb
(10) 4 c5498 c4c98

OSASTOOTSIKKO #2
.datan nimi
FEC-virtuaalikoko
C6000 virtuaalinen osoite
Raakatietojen koko E00
C4E00-tiedoston osoitin raakadataan
0 tiedostoosoitin siirtotaulukkoon
0 tiedostoosoitin rivinumeroihin
0 määrä siirtoja
0 rivinumeroiden määrä
C0000040 liput
Alustetut tiedot
(ei tasausta määritetty)
Lukea kirjoittaa

OSAN OTSIKKO #3
.rsrc nimi
520 virtuaalikoko
C7000 virtuaalinen osoite
600 koko raakadataa
C5C00-tiedoston osoitin raakadataan
0 tiedostoosoitin siirtotaulukkoon
0 tiedostoosoitin rivinumeroihin
0 määrä siirtoja
0 rivinumeroiden määrä
40000040 lippua
Alustetut tiedot
(ei tasausta määritetty)
Lue ainoastaan

OSAN OTSIKKO #4
.reloc nimi
B098 virtuaalinen koko
C8000 virtuaalinen osoite
Raakatietojen koko B200
C6200 tiedostoosoitin raakadataan
0 tiedostoosoitin siirtotaulukkoon
0 tiedostoosoitin rivinumeroihin
0 määrä siirtoja
0 rivinumeroiden määrä
42000040 lippua
Alustetut tiedot
Hävitettävä
(ei tasausta määritetty)
Lue ainoastaan

Viestit ja poikkeukset

Prosessiin yhdistämisen jälkeen näyttöön tulee ensin moduuliluettelo, jonka jälkeen näyttöön saattaa tulla muita viestejä. Esimerkiksi kun kytkeydymme calc.exe-tiedostoon, WinDBG asettaa automaattisesti keskeytyskohdan (joka on yksinkertaisesti merkki, jota käytetään sovelluksen pysäyttämiseen). Rajoituspisteen tiedot näkyvät näytöllä:

(da8.b44): Katkoohjepoikkeus - koodi 80000003 (ensimmäinen mahdollisuus)

Tämä viesti on poikkeus, nimittäin ensimmäisen mahdollisuuden poikkeus. Pohjimmiltaan poikkeus on erityinen ehto, joka ilmenee ohjelman suorituksen aikana. Ensimmäisen mahdollisuuden poikkeus tarkoittaa, että ohjelma pysähtyi välittömästi poikkeuksen tapahtumisen jälkeen. Toisen mahdollisuuden poikkeus tarkoittaa, että poikkeuksen tapahtumisen jälkeen suoritetaan joitain toimintoja, minkä jälkeen ohjelma lakkaa toimimasta.

Rekisterit

Viestien ja poikkeusten näyttämisen jälkeen debuggeri näyttää prosessorirekisterien tilan. Rekisterit ovat prosessorin sisällä olevia erityisiä muuttujia, jotka tallentavat pieniä tietoja tai tarkkailevat muistissa olevan asian tilaa. Käsittelijä pystyy käsittelemään näissä rekistereissä olevat tiedot erittäin nopeasti. Tämä on paljon nopeampaa kuin tiedon saaminen väylän kautta RAM-muistista joka kerta.

Yhteyden muodostamisen jälkeen calc.exe-tiedostoon WinDBG näyttää automaattisesti tiedot seuraavista rekistereistä:

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

Voit kopioida nämä tiedot uudelleen myöhemmin r-komennolla:

0:005>r
eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
eip=77663540 esp=02affd9c ebp=02affdc8 iopl=0 nv ylös 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

Jos haluamme saada tietyn rekisterin arvon, voimme suorittaa seuraavan komennon:

0:005> r eax
eax=7ffd9000

Tietoja voidaan saada samanaikaisesti useista rekistereistä seuraavasti:

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

Osoitin ohjeeseen

Viimeinen komento koskee suoritettavia ohjeita. Tässä näytöllä näytetään myös tiedot siitä, mitä EIP-rekisteri sisältää, kuten r-komennon tapauksessa. EIP on rekisteri, joka sisältää seuraavan prosessorin suorittaman käskyn sijainnin. Mitä WinDBG näyttää, vastaa komentoa u eip L1, jonka jälkeen WinDBG menee EIP-rekisterissä määritettyyn osoitteeseen, muuntaa tämän osan kokoonpanokoodiksi ja näyttää sen näytöllä.

ntdll!DbgBreakPoint:
77663540 cc int 3

pysyä yhteydessä

Tulevissa artikkeleissa tarkastellaan WinDBG:n käyttöä kentällä: keskeytyspisteet, vaiheittainen virheenkorjaus ja muistin selaus. Älä vaihda! J.

Vianetsintätyökalut Windowsille- Käyttökoodin virheenkorjaustyökalut Windows-järjestelmät. Ne ovat joukko Microsoftin vapaasti jaettavia ohjelmia, jotka on suunniteltu käyttäjätilan ja ydintilan koodin virheenkorjaukseen: sovellukset, ohjaimet, palvelut, ydinmoduulit. Työkalupakkaus sisältää konsoli- ja graafisen käyttöliittymän virheenkorjausohjelmia, apuohjelmia symbolien kanssa työskentelemiseen, tiedostoja, prosesseja ja apuohjelmia etävirheenkorjaukseen. Työkalupakkaus sisältää apuohjelmia, joiden avulla voidaan etsiä eri järjestelmän komponenttien vikojen syitä. Vianetsintätyökalut Windowsille Tietystä kohdasta eteenpäin eivät ole ladattavissa erillisen jakelun muodossa, ja ne ovat osa Windows SDK:ta (Windows Software Development Kit). Sarja instrumentaalia Windowsin työkalut SDK puolestaan ​​on saatavilla osana MSDN-tilausohjelmaa tai sen voi ladata ilmaiseksi erillisenä jakeluna osoitteesta msdn.microsoft.com. Kehittäjien mukaan uusimmat ja useimmat nykyinen versio Vianetsintätyökalut Windowsille sisältyy erityisesti Windows SDK:hen.

Windowsin virheenkorjaustyökaluja päivitetään ja tuodaan julkisesti saataville melko usein, eikä tämä prosessi ole millään tavalla riippuvainen käyttöjärjestelmien julkaisusta. Tarkista siksi säännöllisesti uusia versioita.

Katsotaan nyt, mihin erityisesti virheenkorjaustyökalut ovat Microsoft Windows:

  • Virheenkorjaus paikalliset sovellukset, palvelut, ajurit ja ydin;
  • Tee virheenkorjaus etäsovelluksia, palveluita, ohjaimia ja ydintä verkon kautta;
  • Virheenkorjaus käynnissä olevien sovellusten reaaliajassa;
  • Analysoi sovellusten, ytimen ja koko järjestelmän muistivedostiedostot;
  • Työskentele x86/x64/Itanium-arkkitehtuureihin perustuvien järjestelmien kanssa;
  • Virheenkorjaus käyttäjätilan ja ydintilan ohjelmat;

Seuraavat versiot Windowsin virheenkorjaustyökaluista ovat saatavilla: 32-bittinen x86, Intel Itanium, 64-bittinen x64. Tarvitsemme niitä kaksi: x86 tai x64.

On olemassa useita tapoja asentaa virheenkorjaustyökaluja Windowsille; tässä artikkelissa tarkastellaan vain tärkeimpiä:

  • Asennus web-asennusohjelman kautta.
  • Vianetsintätyökalujen asentaminen Windowsille ISO:sta Windows-kuva SDK.
  • Vianetsintätyökalujen asentaminen Windowsille suoraan dbg_amd64.msi / dbg_x86.msi-paketeista.

On edelleen epäselvää, missä vaiheessa, miksi minun pitäisi asentaa virheenkorjaustyökalut tietokoneelleni? Usein kohtaat tilanteen, jossa työympäristöön puuttuminen on erittäin epätoivottavaa! Ja vielä enemmän, uuden tuotteen asentaminen, toisin sanoen muutosten tekeminen rekisteri-/järjestelmätiedostoihin, voi olla täysin mahdotonta hyväksyä. Esimerkkejä ovat kriittiset palvelimet. Miksi kehittäjät eivät harkitse sovellusten kannettavien versioiden vaihtoehtoa, jotka eivät vaadi asennusta?
Versiosta toiseen Debugging Tools for Windows -paketin asennusprosessissa tapahtuu joitain muutoksia. Siirrytään nyt suoraan asennusprosessiin ja tarkastellaan tapoja, joilla voit asentaa työkalupakin.

Vianetsintätyökalujen asentaminen Windowsille verkkoasennusohjelman avulla

Siirry Windows SDK -arkistosivulle ja etsi osio nimeltä Windows 10 ja kohdan "Windows 10 SDK (10586) ja laiteemulaattori Windows 10 Mobilella (Microsoft) (versio 10586.11)" alapuolelta.

Napsauta kohdetta ASENNA SDK. Napsautuksen jälkeen lataa ja suorita tiedosto sdksetup.exe, joka käynnistää Windows SDK:n online-asennusprosessin. Alkuvaiheessa asennusohjelma tarkistaa, onko .NET Framework -paketti asennettu järjestelmään uusin versio(V Tämä hetki tämä on 4.5). Jos paketti puuttuu, asennusta tarjotaan ja asema käynnistyy uudelleen, kun se on valmis. Heti uudelleenkäynnistyksen jälkeen, käyttäjän valtuutusvaiheessa, itse Windows SDK:n asennus alkaa.

Usein, kun valitaan poikkeuksetta kaikki paketin komponentit, asennusprosessin aikana saattaa ilmetä virheitä. Tässä tapauksessa on suositeltavaa asentaa komponentit valikoivasti, vähimmäisvaatimus.

Kun Debugging Tools for Windows -sovelluksen asennus on valmis, virheenkorjaustiedostojen sijainti milloin tätä menetelmää Asennuksemme tulee olemaan seuraava:

  • 64-bittiset versiot: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • 32-bittiset versiot: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x86

* missä x.x on kehityspaketin tietty versio;
Huomasimme, että versioissa 8 ja uudemmissa asennuspolut eroavat huomattavasti klassisista kaikille aiemmat versiot Virheenkorjaustyökalut?

Valtava plussa tätä menetelmää Vianetsintätyökalujen asentaminen Windowsille edellyttää virheenkorjaustyökalujen versioiden asentamista kaikille arkkitehtuureille kerralla.

Vianetsintätyökalujen asentaminen Windowsille Windows SDK ISO:sta

Tämä menetelmä sisältää virheenkorjaustyökalujen asentamisen Windowsille käyttämällä täydellistä Windows SDK (Software Developers Kit) -asennusotosta. Lataa tiettyyn aikaan asti ISO-kuva vastaavalle järjestelmälle se oli mahdollista Windows SDK -arkistosivulla. Tällä hetkellä voit kuitenkin saada SDK:n ISO-kuvan suorittamalla web-asennusohjelman sdksetup.exe ja valitsemalla Lataa Windows Software Development Kit asennusohjelman aloitusikkunassa:

Kuten huomasimme, edellinen asennustapa verkkoasennusohjelmalla on melko oikukas ja päättyy usein virheeseen. Puhtaissa järjestelmissä se asentuu ilman ongelmia, mutta riittävän kuormitetuissa järjestelmissä ilmenee lukuisia ongelmia. Jos tämä on sinun tapauksesi, käytä tätä menetelmää.

Vastaavasti sivulla sinun on valittava tarvittava jakelu, minulle (ja uskoakseni monille) tällä hetkellä se on "Windows SDK for Windows 7 and .NET Framework 4" ja napsauta alla olevaa linkkiä "Hanki ISO". DVD-levyn kuva”.

Kun työskentelet sivuston msdn.microsoft.com kanssa, suosittelen selaimen käyttöä Internet Explorer, koska on ollut tapauksia, joissa kilpailevat tuotteet eivät toimi!

Näin ollen on tarpeen valita vain tarpeen mukaan. Yleensä Windowsin virheenkorjaustyökalujen bittimäärä vastaa järjestelmän bittimäärää. Järjestelmäni ovat enimmäkseen 64-bittisiä, joten useimmissa tapauksissa lataan kuvan 64-bittiselle järjestelmälle GRMSDKX_EN_DVD.iso.
Sitten kuvan lataamisen jälkeen meidän on jotenkin työskenneltävä olemassa olevan ISO-kuvan kanssa. Perinteinen tapa on tietysti polttaa CD, mutta tämä on melko pitkä ja joskus kallis menetelmä. Suosittelen ilmaisten apuohjelmien käyttöä virtuaalisten levylaitteiden luomiseen järjestelmään. Henkilökohtaisesti käytän mieluummin DEAMON Tools Liteä tähän tarkoitukseen. Jollakin voi olla muita mieltymyksiä, suoria tai kevyempiä apuohjelmia maun ja värin mukaan, kuten sanotaan. DAEMON Tools Liten asennuksen jälkeen yksinkertaisesti kaksoisnapsautan kuvatiedostoa GRMSDKX_EN_DVD.iso ja uusi virtuaalinen kuva ilmestyy järjestelmään. CD:

Sitten kaksoisnapsauttamalla aktivoin automaattisen latauksen ja käynnistän Windows SDK:n asennuksen:

Kun on aika valita asennettavat komponentit luettelosta, poistamme käytöstä ehdottomasti kaikki vaihtoehdot paitsi kuvakaappauksessa merkityt. Tämä auttaa meitä välttämään tarpeettomia virheitä nyt.


Kaikki on täsmälleen niin, kuvakaappauksessa on kaksi vaihtoehtoa: "Windows Performance Toolkit" ja "Debugging Tools for Windows". Valitse molemmat, sillä Windows Performance Toolkit on varmasti hyödyllinen työssäsi! Sen jälkeen "Seuraava"-painikkeen painamisen jälkeen asennus jatkuu tavalliseen tapaan. Ja lopussa näet merkinnän "Asennus valmis".
Kun asennus on valmis, Debugging Tools for Windows -paketin työhakemistot ovat seuraavat:

  • x86-versiolle:
  • x64-versiolle:

Tässä vaiheessa Windowsin virheenkorjaustyökalujen asennuksen voidaan katsoa olevan valmis.

Vianetsintätyökalujen asentaminen Windowsille .msi-tiedoston kautta

Jos ongelmia ilmenee asennettaessa Windows Debugging Tools -työkaluja kahdella aikaisemmalla menetelmällä, meillä on vielä yksi lisää, luotettavin ja aikatestatuin, joka on auttanut niin sanotusti useammin kuin kerran. Ennen integrointia Windows SDK:hen, Debugging Tools for Windows oli saatavilla erillisenä installer.msi-tiedostona, joka löytyy edelleen, mutta jo Windows SDK -jakelun sisällä. Koska meillä on jo Windows SDK:n ISO-otos käsissämme, emme voi liittää sitä järjestelmään, vaan yksinkertaisesti avata sen käyttämällä jo tuttua WinRAR-arkistointiohjelmaa tai muuta tuotetta, joka toimii ISO-levyjen sisällön kanssa.

Kuvan avaamisen jälkeen meidän on mentävä juuressa olevaan "Setup" -hakemistoon ja valittava sitten yksi hakemistoista:

  • 64-bittisen version asentaminen: \Setup\WinSDKDebuggingTools_amd64 ja pura dbg_amd64.msi-tiedosto tästä hakemistosta.
  • Asenna 32-bittinen versio seuraavasti: \Setup\WinSDKDebuggingTools ja pura dbg_x86.msi-tiedosto tästä hakemistosta.

Kun asennus on valmis, Debugging Tools for Windows -paketin työhakemistot ovat seuraavat:

  • x86-versiolle: C:\Program Files (x86)\Debugging Tools for Windows (x86)
  • x64-versiolle: C:\Program Files\Debugging Tools for Windows (x64)

Tässä vaiheessa Windowsin virheenkorjaustyökalujen asennuksen voidaan katsoa olevan valmis.

lisäinformaatio

En tiedä, mihin tämä liittyy, ehkä huolimattomuuteni takia, mutta Windowsin Debugging Toolsin asentamisen jälkeen asennusohjelma ei aseta polkua hakemistoon, jossa on virheenkorjaus järjestelmän polkumuuttujassa Path. Tämä asettaa tiettyjä rajoituksia erilaisten virheenkorjaustehtävien käynnistämiselle suoraan konsolista. Siksi, jos polkua ei ole, kirjoitan itsenäisesti ikkunaan ympäristömuuttujat polku virheenkorjaustyökaluihin:

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

* Sinun tapauksessasi polut voivat vaihdella sekä eri bittikokoisen käyttöjärjestelmän käytön että eri SDK-version käytön vuoksi.

Debugging Tools for Windows -paketin apuohjelmat voivat toimia kannettavina sovelluksina; sinun tarvitsee vain kopioida hakemisto toimivasta järjestelmästä Microsoft Windows Performance Toolkit ja käyttää sitä kannettavana versiona tuotantopalvelimella. Mutta älä unohda ottaa huomioon järjestelmän kapasiteettia!! Vaikka olet suorittanut paketin täydellisen asennuksen kriittiseen järjestelmään, voit aloittaa työskentelyn heti asennuksen jälkeen, uudelleenkäynnistystä ei tarvita.

Vianetsintätyökalujen kokoonpano Windowsille

Ja nyt, lopuksi, tässä on Windowsin virheenkorjaustyökalujen kokoonpano:

Tiedosto Tarkoitus
adplus.doc ADPlus-apuohjelman dokumentaatio.
adplus.exe Konsolisovellus, joka automatisoi cdb-virheenkorjaajan työn luomaan vedoksia ja lokitiedostoja yhdelle tai useammalle prosessille.
agestore.exe Apuohjelma vanhentuneiden tiedostojen poistamiseen symbolipalvelimen tai lähdepalvelimen käyttämästä tallennustilasta.
breakin.exe Apuohjelma, jonka avulla voit lähettää mukautetun taukoyhdistelmän prosesseihin samalla tavalla kuin painamalla CTRL+C.
cdb.exe Käyttäjätilan konsolin virheenkorjaus.
convertstore.exe Apuohjelma symbolien muuntamiseen 2-tasoisista 3-tasoisiksi.
dbengprx.exe Toistin (välityspalvelin) etävirheenkorjaukseen.
dbgrpc.exe Apuohjelma RPC-puhelun tilatietojen näyttämiseen.
dbgsrv.exe Etävirheenkorjaukseen käytetty palvelinprosessi.
dbh.exe Apuohjelma symbolitiedoston sisällön näyttämiseen.
dumpchk.exe Kaatopaikan tarkistusapuohjelma. Apuohjelma vedostiedoston nopeaan tarkistamiseen.
dumpexam.exe Apuohjelma muistivedosten analysoimiseen. Tulos tulostetaan tiedostoon %SystemRoot%\MEMORY.TXT.
gflags.exe Globaalien järjestelmälippujen editori. Apuohjelma hallitsee rekisteriavaimia ja muita asetuksia.
i386kd.exe Kääre kd:lle. Tätäkö kd:tä kutsuttiin aikoinaan Windows NT/2000:aan perustuville järjestelmille x86-koneille? Luultavasti jätetty yhteensopivuussyistä.
ia64kd.exe Kääre kd:lle. Kutsuttiinko sitä joskus kd:ksi Windows NT/2000:een perustuville järjestelmille ia64-koneille? Luultavasti jätetty yhteensopivuussyistä.
kd.exe Ydintilan konsolin virheenkorjaus.
kdbgctrl.exe Ytimen virheenkorjauksen hallintatyökalu. Apuohjelma ytimen virheenkorjausyhteyden hallintaan ja määrittämiseen.
kdsrv.exe Yhteyspalvelin KD:lle. Apuohjelma on pieni sovellus, joka toimii ja odottaa etäyhteyksiä. kd toimii asiakaskoneessa ja muodostaa yhteyden tähän palvelimeen etävirheenkorjausta varten. Sekä palvelimen että asiakkaan on oltava samasta Debugging Tools -kokoonpanosta.
kill.exe Apuohjelma prosessien lopettamiseen.
list.exe Apuohjelma tiedoston sisällön näyttämiseen näytöllä. Tämä pienikokoinen apuohjelma sisältyi yhteen tarkoitukseen - suurten teksti- tai lokitiedostojen katseluun. Se vie vähän muistitilaa, koska se lataa tekstin osissa.
logger.exe Pienoiskokoinen debuggeri, joka voi toimia vain yhden prosessin kanssa. Apuohjelma ruiskuttaa logexts.dll-tiedoston prosessitilaan, joka tallentaa kaikki tutkittavan ohjelman toimintokutsut ja muut toiminnot.
logviewer.exe Apuohjelma logger.exe-virheenkorjausohjelman tallentamien lokien katseluun.
ntsd.exe Microsoft NT Symbolic Debugger (NTSD). Vianetsintä on identtinen cdb:n kanssa paitsi, että se luo teksti-ikkunan käynnistettäessä. Kuten cdb, ntsd pystyy korjaamaan sekä konsolisovelluksia että graafisia sovelluksia.
pdbcopy.exe Apuohjelma yksityisten symbolien poistamiseen symbolitiedostosta, symbolitiedoston sisältämien julkisten symbolien hallintaan.
remote.exe Apuohjelma minkä tahansa konsolivirheenkorjauksen KD, CDB ja NTSD etäkorjaukseen ja kauko-ohjaukseen. Voit suorittaa kaikkia näitä konsolin virheenkorjauksia etänä.
rtlist.exe Etätehtävien katseluohjelma. Apuohjelmaa käytetään näyttämään luettelo käynnissä olevista prosesseista DbgSrv-palvelinprosessin kautta.
symchk.exe Apuohjelma symbolien lataamiseen Microsoftin symbolipalvelimelta ja paikallisen symbolivälimuistin luomiseen.
symstore.exe Apuohjelma verkon tai paikallisen symbolitallennustilan (2-taso/3-taso) luomiseen. Symbolien tallennus on levyllä oleva erikoishakemisto, joka on rakennettu tietyn rakenteen mukaisesti ja sisältää symboleja. Symbolien juurihakemistoon luodaan rakenne alikansioista, joiden nimet ovat identtiset komponenttien nimien kanssa. Jokainen näistä alikansioista puolestaan ​​sisältää sisäkkäisiä alikansioita, joilla on erityiset nimet, jotka on saatu tiivistämällä binääritiedostoja. Symstore-apuohjelma skannaa komponenttikansiot ja lisää uusia komponentteja symbolisäilöön, josta kuka tahansa asiakas voi hakea ne. Sanotaan, että symstorea käytetään symbolien vastaanottamiseen 0-tason tallennustilasta ja sijoittamiseen 2-tason/3-tason tallennustilaan.
tlist.exe Tehtävien katseluohjelma. Apuohjelma, joka näyttää luettelon kaikista käynnissä olevista prosesseista.
umdh.exe Käyttäjätilan dump heap -apuohjelma. Apuohjelma valitun prosessin kasojen analysoimiseen. Mahdollistaa keon erilaisten parametrien näyttämisen.
usbview.exe USB-katseluohjelma. Apuohjelma tietokoneeseen kytkettyjen USB-laitteiden katseluun.
vmdemux.exe Virtuaalikoneen demultiplekseri. Luo useita nimettyjä putkia yhdelle COM-yhteydelle. Kanavia käytetään erilaisten virtuaalikoneen komponenttien virheenkorjaukseen
windbg.exe Käyttäjätilan ja ytimen tilan debuggeri graafisella käyttöliittymällä.

Syiden tunnistamiseen siniset näytöt(BSOD) vaaditaan muistivedosanalyysi. Suurimmassa osassa tapauksista riittää minidump, jonka järjestelmä luo kriittisten virheiden sattuessa.
Tämä artikkeli sisältää vaiheittaiset ohjeet WinDBG:n asennuksesta ja määrityksestä - tehokas virheenkorjaustyökalu, jonka avulla voit tunnistaa BSOD:n todellisen syyn.

Vaihe 1 - Pienten muistivedosten määrittäminen

Vaihe 2 - WinDBG:n asentaminen

Muistivedosten analysointia varten sinun on asennettava WinDBG-debuggeri, joka sisältyy Windows SDK:hen. Kirjoitushetkellä viimeisin saatavilla Windows-versiot SDK:

  • Windows 10 SDK (verkkoasennusohjelman lataus)
  • Windows 8.1 SDK (verkkoasennusohjelman lataus)

Vaihe 3 - .dmp-tiedostojen yhdistäminen WinDBG:hen

Muistivedosten lukemisen ja analysoinnin helpottamiseksi yhdistä .dmp-tiedostot WinDBG:hen. Tämän avulla voit avata vedostiedostot Explorerista suoraan WinDBG:ssä käynnistämättä sitä ensin.


Vaihe 4 – Symbolipalvelimen määrittäminen vastaanottamista varten


WinDBG:n asennus ja alkumääritys on valmis. Voit muuttaa sen ulkonäköä siirtymällä valikkoon Näytä- Löydät kirjasinasetukset valitsemalla Fontti ja konsoli-ikkunan asetukset Vaihtoehdot.




Ylös