WinDBG instalēšana un konfigurēšana, lai analizētu atmiņas izgāztuves. Windows atkļūdošanas rīki: diagnosticējiet un labojiet BSOD atkļūdošanas rīkus Windows lietošanai

Kritiskas kļūmes brīdī Windows operētājsistēma pārstāj darboties un parāda zilu nāves ekrānu (BSOD). Saturs brīvpiekļuves atmiņa un visa informācija par notikušo kļūdu tiek ierakstīta peidžeru failā. Nākamajā Windows sāknēšana tiek izveidota avārijas izgāztuve ar atkļūdošanas informāciju, pamatojoties uz saglabātajiem datiem. Sistēmas notikumu žurnālā tiek izveidots fatālas kļūdas ieraksts.

Uzmanību! Avārijas izdruka netiek izveidota, ja diska apakšsistēmā ir radusies kļūme vai ja Windows sāknēšanas sākotnējā posmā ir radusies kritiska kļūda.

Windows avāriju izgāztuvju veidi

Izmantojot pašreizējās Windows 10 operētājsistēmas piemēru ( Windows Server 2016) apsveriet galvenos atmiņas izgāztuves veidus, ko sistēma var izveidot:

  • Neliela atmiņas izplūde (maza atmiņas izplūde)(256 KB). Šāda veida failā ir iekļauts minimālais informācijas apjoms. Tajā ir tikai BSOD kļūdas ziņojums, informācija par draiveriem, procesiem, kas bija aktīvi avārijas brīdī un kurš process vai kodola pavediens izraisīja avāriju.
  • Kodola atmiņas dump. Parasti maza, viena trešdaļa no fiziskās atmiņas apjoma. Kodola atmiņas dump ir detalizētāks nekā minidump. Tajā ir informācija par draiveriem un kodola režīma programmām, Windows kodolam un aparatūras abstrakcijas slānim (HAL) piešķirtā atmiņa, kā arī draiveriem un citām kodola režīma programmām piešķirtā atmiņa.
  • Pilnīga atmiņas izmešana. Lielākais izmērs, un tam nepieciešama atmiņa, kas ir vienāda ar jūsu sistēmas RAM, kā arī 1 MB, kas nepieciešama operētājsistēmai Windows, lai izveidotu šo failu.
  • Automātiska atmiņas dump. Informācijas ziņā atbilst kodola atmiņas izgāztuvei. Tas atšķiras tikai ar to, cik daudz vietas tas izmanto, lai izveidotu izgāztuves failu. Šis faila tips nepastāvēja operētājsistēmā Windows 7. Tas tika pievienots operētājsistēmā Windows 8.
  • Aktīvā atmiņas izmešana. Šis veids filtrē elementus, kas nevar noteikt sistēmas kļūmes cēloni. Tas tika pievienots operētājsistēmā Windows 10 un ir īpaši noderīgi, ja izmantojat virtuālo mašīnu vai ja jūsu sistēma ir Hyper-V resursdators.

Kā iespējot atmiņas izgāztuves ģenerēšanu sistēmā Windows?

Izmantojot Win + Pause, atveriet sistēmas iestatījumu logu, atlasiet " Papildu iespējas sistēmas» (Papildu sistēmas iestatījumi). Cilnē " Turklāt" (Papildu), sadaļā "" (Startēšana un atkopšana), noklikšķiniet uz pogas " Parametri" (Iestatījumi). Atvērtajā logā konfigurējiet darbības sistēmas kļūmes gadījumā. Atzīmējiet izvēles rūtiņu " Ierakstiet notikumus sistēmas žurnālā» (Ierakstiet notikumu sistēmas žurnālā), atlasiet izgāztuves veidu, kas jāģenerē, kad sistēma avarē. Ja izvēles rūtiņā " Aizstāt esošo izgāztuves failu» (Pārrakstīt jebkuru esošo failu) atzīmējiet izvēles rūtiņu, fails tiks pārrakstīts katrā avārijā. Labāk noņemiet atzīmi no šīs izvēles rūtiņas, tad jums būs vairāk informācijas analīzei. Atspējojiet arī automātisko sistēmas restartēšanu (Automātiski restartēt).

Vairumā gadījumu pietiks ar nelielu atmiņas iztukšošanu, lai analizētu BSOD cēloni.

Tagad, ja rodas BSOD, varat analizēt izgāztuves failu un atrast kļūmju cēloni. Minidump pēc noklusējuma tiek saglabāts mapē %systemroot%\minidump. Lai analizētu izgāztuves failu, iesaku izmantot programmu WinDBG(Microsoft kodola atkļūdotājs).

WinDBG instalēšana operētājsistēmā Windows

Lietderība WinDBG iekļauts " Windows 10 SDK» (Windows 10 SDK). .

Fails tiek izsaukts winsdksetup.exe, izmērs 1,3 MB.

Palaidiet instalēšanu un izvēlieties, vai instalēt pakotni šajā datorā vai lejupielādēt to instalēšanai citos datoros. Instalējiet pakotni lokālajā datorā.

Varat instalēt visu pakotni, bet, lai instalētu tikai atkļūdošanas rīku, atlasiet Atkļūdošanas rīki operētājsistēmai Windows.

Pēc instalēšanas WinDBG saīsnes var atrast sākuma izvēlnē.

.dmp failu saistīšanas iestatīšana ar WinDBG

Lai atvērtu izgāztuves failus ar vienkāršu klikšķi, kartējiet paplašinājumu .dmp ar WinDBG utilītu.

  1. Atvērt komandrinda kā administrators un palaist komandas 64 bitu sistēmai: cd C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    windbg.exe –IA
    32 bitu sistēmai:
    C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
    windbg.exe –IA
  2. Rezultātā failu tipi: .DMP, .HDMP, .MDMP, .KDMP, .WEW tiks kartēti uz WinDBG.

Atkļūdošanas simbolu servera iestatīšana programmā WinDBG

Atkļūdošanas simboli (atkļūdošanas simboli vai simbolu faili) ir datu bloki, kas tiek ģenerēti programmas kompilēšanas procesā kopā ar izpildāmo failu. Šādi datu bloki satur informāciju par mainīgo nosaukumiem, ko sauc par funkcijām, bibliotēkām utt. Šie dati nav nepieciešami, palaižot programmu, bet noderīgi, to atkļūdojot. Microsoft komponenti ir apkopoti ar simboliem, kas tiek izplatīti, izmantojot Microsoft Symbol Server.

Iestatiet WindDBG uz Microsoft lietošana Simbolu serveris:

  • Atveriet WinDBG;
  • Dodieties uz izvēlni Fails –> Simbolu faila ceļš;
  • Ierakstiet virkni, kas satur URL atkļūdošanas simbolu lejupielādei no Microsoft vietnes un mapi kešatmiņas saglabāšanai: SRV*E:\Sym_WinDBG*http://msdl.microsoft.com/download/symbols Piemērā tiek lejupielādēta kešatmiņa. uz mapi E:\Sym_WinDBG, varat norādīt jebkuru.
  • Neaizmirstiet saglabāt izmaiņas izvēlnē Fails–>Saglabāt darba vietu;

WinDBG meklēs simbolus lokālajā mapē un, ja tajā neatradīs nepieciešamos simbolus, tas automātiski lejupielādēs simbolus no norādītās vietnes. Ja vēlaties pievienot savu simbolu mapi, varat to izdarīt šādi:

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

Ja nav interneta savienojuma, vispirms lejupielādējiet simbolu pakotni no Windows simbolu pakotņu resursa.

Avāriju izgāztuves analīze programmā WinDBG

Atkļūdotājs WinDBG atver izgāztuves failu un lejupielādē atkļūdošanai nepieciešamos simbolus no vietējās mapes vai no interneta. Šī procesa laikā nevar izmantot WinDBG. Loga apakšā (atkļūdotāja komandrindā) parādās uzraksts Atkļūdošanas programma nav savienota.

Komandas tiek ievadītas komandrindā, kas atrodas loga apakšā.

Vissvarīgākais, kam jāpievērš uzmanība, ir kļūdas kods, kas vienmēr tiek norādīts heksadecimālajā vērtībā un izskatās kā 0xXXXXXXXXX(norādīts vienā no opcijām - STOP:, 07/02/2019 0008F, 0x8F). Mūsu piemērā kļūdas kods ir 0x139.

Atkļūdotājs aicina izpildīt komandu!analiz -v, vienkārši virziet kursoru virs saites un noklikšķiniet. Kam paredzēta šī pavēle?

  • Tā veic atmiņas izgāztuves provizorisku analīzi un nodrošina Detalizēta informācija lai sāktu analīzi.
  • Šī komanda parādīs STOP kodu un kļūdas simbolisko nosaukumu.
  • Tas parāda to komandu zvanu kopu, kuras izraisīja avāriju.
  • Turklāt šeit tiek parādīta IP adrese, procesa un reģistra kļūdas.
  • Komanda var sniegt gatavus ieteikumus problēmas risināšanai.

Galvenie punkti, kuriem jāpievērš uzmanība, veicot analīzi pēc komandas !analyze -v izpildes (saraksts nav pilnīgs).

1: kd> !analyze -v


* *
*Kļūdu pārbaudes analīze*
* *
*****************************************************************************
STOP kļūdas simboliskais nosaukums (BugCheck)
KERNEL_SECURITY_CHECK_FAILURE (139)
Kļūdas apraksts (kodola komponents ir sabojājis kritisku datu struktūru. Šis bojājums, iespējams, ļautu uzbrucējam pārņemt kontroli pār šo iekārtu):

Kodola komponents ir sabojājis svarīgu datu struktūru. Bojājums, iespējams, ļautu ļaunprātīgam lietotājam iegūt kontroli pār šo iekārtu.
Kļūdu argumenti:

Argumenti:
Arg1: 0000000000000003, LIST_ENTRY ir bojāts (t.i., dubultā noņemšana).
Arg2: ffffd0003a20d5d0, slazdošanas rāmja adrese izņēmumam, kas izraisīja kļūdu pārbaudi
Arg3: ffffd0003a20d528, izņēmuma ieraksta adrese izņēmumam, kas izraisīja kļūdu pārbaudi
Arg4: 0000000000000000, rezervēts
Atkļūdošanas informācija:
------------------

Skaitītājs parāda, cik reižu sistēma avarēja ar līdzīgu kļūdu:

CUSTOMER_CRASH_COUNT: 1

DEFAULT_BUCKET_ID: FAIL_FAST_CORRUPT_LIST_ENTRY

STOP kļūdas kods saīsinātā formātā:

BUGCHECK_STR: 0x139

Process, kas avarēja (ne vienmēr kļūdas cēlonis, tikai šis process darbojās atmiņā avārijas brīdī):

PROCESS_NAME: sqlservr.exe

Kļūdas koda atšifrēšana: sistēma ir konstatējusi steka bufera pārpildīšanu šajā lietojumprogrammā, kas var ļaut uzbrucējam pārņemt kontroli pār šo lietojumprogrammu.

ERROR_CODE: (NTSTATUS) 0xc0000409 — sistēma šajā lietojumprogrammā konstatēja steka bufera pārtēriņu. Šis pārsniegums, iespējams, ļautu ļaunprātīgam lietotājam iegūt kontroli pār šo lietojumprogrammu.
EXCEPTION_CODE: (NTSTATUS) 0xc0000409 — sistēma šajā lietojumprogrammā konstatēja steka bufera pārtēriņu. Šis pārsniegums, iespējams, ļautu ļaunprātīgam lietotājam iegūt kontroli pār šo lietojumprogrammu.

Pēdējais zvans stekā:

LAST_CONTROL_TRANSFER: no fffff8040117d6a9 uz fffff8040116b0a0

Zvanu steka kļūmes brīdī:

STACK_TEXT:
ffffd000`3a20d2a8 fffff804`0117d6a9: 00000000`00000139 00000000`00000003 ffffd000`3a20d5d0 ffffd000`KeB28:20nt!
ffffd000`3a20d2b0 fffff804`0117da50: ffffe000`f3ab9080 ffffe000`fc37e001 ffffd000`3a20d5d0 fffff804`0116e2a2: CheckiisBpatch nt!
ffffd000`3a20d3f0 fffff804`0117c150: 00000000`00000000 00000000`00000000 00000000`00000000 000000000 000000000 000000000 000000000 000000000 000000000
ffffd000`3a20d5d0 fffff804`01199482: ffffc000`701ba270 ffffc000`00000001 000000ea`73f68040 ffffff804`0000ntcurities!KRahe+F9
ffffd000`3a20d760 fffff804`014a455d: 00000000`00000001 ffffd000`3a20d941 ffffe000`fcacb000 ffffd000`3a20d951: ?? ::FNODOBFM::`string"+0x17252
ffffd000`3a20d8c0 fffff804`013a34ac: 00000000`00000004 00000000`00000000
ffffd000`3a20d990 fffff804`0117d313: ffffffff`ffffffe 00000000`00000000 00000000`00000000 000000eb`a0cf1380:6Fintle+0txrite
ffffd000`3a20da90 00007ffb`475307da: 00000000`00000000 00000000`00000000 00000000`00000000 000000000 000000000 000000000 000000000 0000000000000000000
000000ee'f25ed2b8 00000000'00000000: 00000000'00000000 00000000'00000000 00000000'00000000

Koda sadaļa, kurā radās kļūda:

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: mašīnas īpašnieks

Moduļa nosaukums kodola objektu tabulā. Ja analizators varēja noteikt problemātisks vadītājs, nosaukums tiek parādīts laukos MODULE_NAME un IMAGE_NAME:

MODULE_NAME: nt
IMAGE_NAME: ntkrnlmp.exe

1: kd > lmvm nt
Pārlūkojiet pilnu moduļu sarakstu
Ielādēts simbola attēla fails: ntkrnlmp.exe
Kartēts atmiņas attēla fails: C:\ProgramData\dbg\sym\ntoskrnl.exe\5A9A2147787000\ntoskrnl.exe
Attēla ceļš: ntkrnlmp.exe
Attēla nosaukums: ntkrnlmp.exe
Iekšējais nosaukums: ntkrnlmp.exe
Sākotnējais faila nosaukums: ntkrnlmp.exe
Produkta versija: 6.3.9600.18946
Faila versija: 6.3.9600.18946 (winblue_ltsb_escrow.180302-1800)

Iepriekš minētajā piemērā analīze norādīja uz kodola failu ntkrnlmp.exe. Ja atmiņas izgāztuves analīze norāda uz sistēmas draiveri (piemēram, win32k.sys) vai kodola failu (piemēram, mūsu piemērā, ntkrnlmp.exe), tas, visticamāk, dotais fails nav problēmas cēlonis. Ļoti bieži izrādās, ka problēma ir ierīces draiverī, BIOS iestatījumi vai iekārtas darbības traucējumi.

Ja redzat, ka BSOD ir radījis trešās puses draiveris, tā nosaukums tiks norādīts vērtībās MODULE_NAME un IMAGE_NAME.

Piemēram:

Attēla ceļš: \SystemRoot\system32\drivers\cmudaxp.sys
Attēla nosaukums: cmudaxp.sys

Atveriet draivera faila rekvizītus un pārbaudiet tā versiju. Vairumā gadījumu problēma ar draiveriem tiek atrisināta, tos atjauninot.

2010. gada 22. jūnijs

Iepriekš Windbg bija pieejams lejupielādei atsevišķi. Taču jaunākajām versijām Microsoft to saglabā kā daļu no Windows SDK. Lūdzu, skatiet tālāk norādītās lejupielādes saites.

Windows 10

Jaunāko Windbg versiju operētājsistēmai Windows 7 var lejupielādēt no saites https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

Windows 7

Lejupielādējiet instalētājus no iepriekš minētajām saitēm. Ņemiet vērā, ka tādējādi netiek lejupielādēts viss SDK, tas ir tikai instalētājs. kad palaižat failu, tu vari atlasiet, kurus rīkus vēlaties lejupielādēt. Ja jūs interesē tikai Windbg, varat izslēgt visu pārējo un sadaļā "Kopējās utilītas" atlasiet tikai "Atkļūdošanas rīki".

Iepriekš minētā pakotne instalē windbg 6.12 versiju. Ja vēlaties ātri instalēt windbg, varat izvēlēties vecāku versiju (6.11), kuru var lejupielādēt no
saite, kas sniegta šīs ziņas beigās.

Kad esat pabeidzis instalēšanu, jūs varat atrast programmu izvēlnē Sākt -> Visas programmas -> Atkļūdošanas rīki operētājsistēmai Windows -> Windbg

Ievads WinDBG — 1. daļa

Aleksandrs Antipovs

WinDBG ir lielisks atkļūdotājs. Iespējams, ka tai nav ļoti lietotājam draudzīgs interfeiss un pēc noklusējuma nav melna fona, taču tas ir viens no jaudīgākajiem un stabilākajiem Windows atkļūdotājiem pašlaik. Šajā rakstā es iepazīstināšu jūs ar WinDBG pamatiem, lai jūs varētu sākt ar to.


WinDBG ir lielisks atkļūdotājs. Iespējams, ka tai nav ļoti lietotājam draudzīgs interfeiss un pēc noklusējuma nav melna fona, taču tas ir viens no jaudīgākajiem un stabilākajiem Windows atkļūdotājiem pašlaik. Šajā rakstā es iepazīstināšu jūs ar WinDBG pamatiem, lai jūs varētu sākt ar to.

Šis ir pirmais raksts sērijā par WinDBG. Visu šajā sērijā iekļauto rakstu saraksts:

  • 1. daļa - instalācija, interfeiss, simboli, attālā/lokālā atkļūdošana, palīdzības sistēma, moduļi, reģistri.
  • 2. daļa - pārtraukuma punkti.
  • 3. daļa - atmiņas pārbaude, programmas soli pa solim atkļūdošana, padomi un triki.

Šajā rakstā mēs apskatīsim montāžu un pievienošanu procesam, savukārt turpmākajos rakstā apskatīsim pārtraukuma punktus, pāreju un atmiņas pārbaudi.

WinDBG instalēšana

Salīdzinot ar Windows 7, WinDBG instalēšanas process operētājsistēmā Windows 8 ir nedaudz mainījies. Šajā sadaļā mēs aplūkosim atkļūdotāja instalēšanu abiem operētājsistēmas.

WinDBG instalēšana operētājsistēmā Windows 8

Operētājsistēmā Windows 8 WinDBG ir iekļauts Windows draiveru komplektā (WDK). Varat instalēt Visual Studio un WDK vai instalēt Windows 8.1 atkļūdošanas rīku pakotni atsevišķi, kas ietver WinDBG.

Instalēšanas programma jautās, vai vēlaties instalēt WinDBG lokāli vai lejupielādēt visu izstrādes pakotni citam datoram. Pēdējais būtībā ir līdzvērtīgs bezsaistes instalētājs, kas ir ļoti ērti, ja nākotnē vēlaties instalēt pakotni citās sistēmās.

1. attēls. Instalācijas veida izvēle

Nākamajā logā jums ir jānoņem atzīmes no visiem vienumiem, izņemot "Atkļūdošanas rīki operētājsistēmai Windows", un noklikšķiniet uz pogas "Lejupielādēt".

Kad instalētājs ir pabeidzis darbu, dodieties uz direktoriju, kurā tika lejupielādēta pakotne (pēc noklusējuma tas ir c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK) un veiciet instalēšanas procedūru.

WinDBG instalēšana operētājsistēmā Windows 7 un vecākās versijās

Operētājsistēmā Windows 7 un vecākām versijām WinDBG ir daļa no pakotnes "Atkļūdošanas rīki operētājsistēmai Windows", kas ir iekļauta Windows SDK un .Net Framework. Jums būs jālejupielādē instalēšanas programma un pēc tam instalēšanas procesa laikā jāizvēlas "Atkļūdošanas rīki operētājsistēmai Windows".

Instalēšanas laikā es atlasu opciju "Atkļūdošanas rīki" sadaļā "Atkārtoti izplatāmās pakotnes", lai izveidotu atsevišķu instalēšanas programmu, kas atvieglotu turpmāko instalēšanu.

2. attēls. Instalēšanas opciju atlase, lai izveidotu atsevišķu instalētāju

Kad instalēšana ir pabeigta, jums ir jābūt WinDBG instalētājiem dažādām platformām (mapē c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\).

3. attēls. Mape ar WinDBG instalētājiem dažādām platformām

WinDBG interfeiss

4. attēls: WinDBG izskats

Tiklīdz pirmo reizi redzat izskats WinDGB, jūs sapratīsit, ka atkļūdotājs ir biedējoši vienkāršs. Lielākā daļa WinDBG funkciju tiek apgūtas procesa atkļūdošanas laikā. Tā vietā, lai tērētu laiku saskarnes aprakstīšanai, turpmākajās sadaļās mēs apskatīsim tikai vissvarīgākos punktus.

Visvienkāršākā lieta, kas jums jāzina par atkļūdotāja saskarni, ir komandu logs, kas sastāv no divām jomām. Pirmais apgabals: logs, kurā tiek parādīts komandu izpildes rezultāts. Otrā zona: neliels teksta lauks komandu ievadīšanai.

5. attēls: WinDBG komandu logs

Simboli

Vairumā gadījumu WinDBG neprasa nekādus īpašus iestatījumus un darbojas pareizi uzreiz no kastes. Bet viena svarīga lieta, kas ir jāpielāgo, ir simboli. Simboli ir faili, kas programmas kompilēšanas laikā tiek ģenerēti kopā ar izpildāmo failu un satur atkļūdošanas informāciju (funkcijas un mainīgo nosaukumus). Atkļūdošanas informācija ļauj izpētīt lietojumprogrammas funkcionalitāti atkļūdošanas vai izjaukšanas laikā. Daudzi Microsoft komponenti ir apkopoti ar simboliem, kas tiek izplatīti, izmantojot Microsoft Symbol Server. Ar pārējiem izpildāmajiem failiem viss nav tik rožaini - ļoti reti faili ar atkļūdošanas informāciju tiek komplektēti ar lietojumprogrammu. Vairumā gadījumu uzņēmumi ierobežo piekļuvi šādai informācijai.

Lai konfigurētu WinDBG, lai izmantotu Microsoft Symbol Server, dodieties uz sadaļu Fails:Simbolu faila ceļš un iestatiet ceļu uz SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. Protams, ir nedaudz dīvaini, ka zvaigznītes tiek izmantotas kā norobežotājs. Pēc Microsoft Symbol Server iestatīšanas simboli tiks lejupielādēti mapē C:\Symbols.

6. attēls: Microsoft Symbol Server iestatīšana

WinDBG automātiski ielādēs simbolus binārajiem failiem, kad tas būs nepieciešams. Varat arī pievienot savu simbolu mapi, piemēram:

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

Simbolu pievienošana atkļūdošanas laikā

Ja atkļūdošanas laikā jums ir jāimportē simboli, varat to izdarīt, izmantojot .sympath (komandu logs parādīsies, kad pievienosities procesam). Piemēram, lai pievienotu mapi c:\SomeOtherSymbolFolder, ievadiet šādu komandu:

0:025> .sympath+ c:\SomeOtherSymbolFolder
Simbolu meklēšanas ceļš ir: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
Izvērstais simbolu meklēšanas ceļš ir: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

Ieteicams atkārtoti ielādēt simbolus pēc ceļu pievienošanas vai mainīšanas:

0:025> .reload
Strāvas moduļu pārlādēšana
................................................................
...............................................

Ielādēto simbolu pārbaude

Lai redzētu, kuros moduļos ir ielādēti simboli, varat izmantot komandu x*!. Lai gan WinDBG ielādē simbolus tikai pēc vajadzības, x*! parādīs simbolus, kurus var ielādēt. Varat piespiest ielādēt simbolus, izmantojot komandu ld * (tas var aizņemt kādu laiku, un jūs varat apturēt šo procesu, dodoties uz Debug:Break).

Tagad mēs varam redzēt katra moduļa simbolus.

8. attēls: Simbolu saraksts

Vietējā procesa atkļūdošana

Atkļūdojot lokālo procesu, jums ir divas iespējas:

  1. Pievienojiet jau esošam procesam.
  2. Palaišanas process, izmantojot WinDBG.

Katrai metodei ir savas priekšrocības un trūkumi. Ja, piemēram, palaižat programmu, izmantojot WinDBG, jums ir pieejamas dažas īpašas atkļūdošanas opcijas (piemēram, kaudzes atkļūdošana), kas var izraisīt lietojumprogrammas avāriju. No otras puses, ir arī programmas, kas avarē, pievienojot tām atkļūdotāju. Dažas lietojumprogrammas (īpaši ļaunprātīga programmatūra) startēšanas laikā pārbauda atkļūdotāja klātbūtni sistēmā, un attiecīgi šajā gadījumā ir jēga pieķerties jau esošam procesam. Dažreiz Windows pakalpojumam tiek veikta atkļūdošana, kas startēšanas laikā iestata dažus parametrus, tāpēc, lai vienkāršotu atkļūdošanas procesu, labāk ir arī piesaistīt darbojošos procesu, nevis sākt pakalpojumu, izmantojot atkļūdotāju. Daži cilvēki apgalvo, ka procesa palaišana, izmantojot atkļūdotāju, nopietni ietekmē veiktspēju. Īsāk sakot, izmēģiniet abus un izvēlieties sev piemērotāko. Ja kādu iemeslu dēļ dodat priekšroku kādai konkrētai metodei, dalieties savās domās komentāros!

Procesa sākšana

Ja atkļūdojat atsevišķu lietojumprogrammu, kas darbojas lokāli un nav savienota ar tīklu, iespējams, vēlēsities to palaist, izmantojot WinDBG. Tomēr tas nenozīmē, ka jūs nevarat piesaistīt jau notiekošu procesu. Izvēlieties sev ērtāko veidu.

Procesa sākšana nav grūta. Dodieties uz "File:Open Executable" un atlasiet izpildāmo failu, kuru vēlaties atkļūdot. Varat arī norādīt argumentus vai iestatīt sākuma direktoriju:

9. attēls. Atlase izpildāmais fails atkļūdošanai

Procesa savienojums

Pieslēgties jau esošam procesam arī nav grūti. Tomēr, lūdzu, ņemiet vērā, ka dažos gadījumos var paiet laiks, līdz tiek atrasts precīzs process, kuru vēlaties atkļūdot. Piemēram, dažas pārlūkprogrammas katrai cilnei izveido vienu vecākprocesu un pēc tam vēl vairākus procesus. Tātad, atkarībā no avārijas izgāztuves, kuru atkļūdojat, iespējams, vēlēsities piesaistīt nevis vecākprocesu, bet gan ar cilni saistīto procesu.

Lai pievienotu jau esošam procesam, atveriet sadaļu "Fails: Pievienot procesam" un pēc tam atlasiet PID vai procesa nosaukumu. Atcerieties, ka jums ir jābūt atbilstošām tiesībām, lai iesaistītos procesā.

10. attēls. Procesa izvēle, kam piesaistīt

Ja pēc savienojuma izveides lietojumprogramma ir apturējusi savu darbību, varat izmantot režīmu "Noninvaise", atzīmējot atbilstošo izvēles rūtiņu.

Attālā procesa atkļūdošana

Dažreiz var būt nepieciešams atkļūdot procesu attālā sistēmā. Daudz ērtāk būtu šo problēmu atrisināt ar vietējo atkļūdotāju, nevis izmantot virtuālā iekārta vai LAP. Vai varbūt jūs atkļūdojat procesu LoginUI.exe, kas ir pieejams tikai tad, kad sistēma ir bloķēta. Šādās situācijās varat izmantot vietējo WinDBG versiju un attālināti pievienoties procesiem. Lai atrisinātu šīs problēmas, ir divas visizplatītākās metodes.

Esošās atkļūdošanas sesijas

Ja esat jau sācis programmas atkļūdošanu lokāli (pievienojot vai palaižot procesu, izmantojot WinDBG), varat ievadīt konkrētu komandu, un WinDBG sāks "klausītāju" (klausītāju), ar kuru attālinātais atkļūdotājs var izveidot savienojumu. Lai to izdarītu, izmantojiet komandu .server:

Serveris tcp:port=5005

Pēc iepriekš minētās komandas palaišanas, iespējams, tiks parādīts šāds brīdinājums:

11. attēls. Brīdinājuma ziņojums, kas var parādīties pēc komandas palaišanas, lai izveidotu "klausītāju"

Pēc tam WinDBG ziņos, ka serveris darbojas:

0:005> .server tcp:port=5005
0: -remote tcp:Port=5005,Serveris=USER-PC

Tagad varat izveidot savienojumu no attālā resursdatora ar jau esošu atkļūdošanas sesiju, atverot sadaļu "Fails:Savienojums ar attālo sesiju" un teksta laukā ievadot kaut ko līdzīgu: tcp:Port=5005,Server=192.168.127.138

12. attēls. Attālais savienojums ar atkļūdošanas sesiju

Pēc savienojuma izveides jūs saņemsit apstiprinājumu attālajā klientā:


serveris startēja. Klients var izveidot savienojumu ar jebkuru no šīm komandrindām
0: -remote tcp:Port=5005,Serveris=USER-PC
MACHINENAME\User (tcp 192.168.127.138:13334) izveidots 2013. gada 16. decembrī, pirmdien, 09:03:03

un ziņojums atkļūdotāja vietējā versijā:

MACHINENAME\User (tcp 192.168.127.138:13334) izveidots 2013. gada 16. decembrī, pirmdien, 09:03:03

Izveidojiet attālo serveri

Varat arī izveidot atsevišķu WinDBG serveri, izveidot savienojumu ar to attālināti un atlasīt atkļūdošanas procesu. To var izdarīt, izmantojot failu dbgsrv.exe, kurā plānojat atkļūdot procesus. Lai palaistu šādu serveri, palaidiet šādu komandu:

dbgsrv.exe -t tcp:port=5005

13. attēls. Attālā servera palaišana

Un atkal jūs varat saņemt drošības brīdinājumu, kas jums jāpieņem:

14. attēls. Drošības ziņojums, kas var parādīties startēšanas laikā atkļūdošanas serveris

Varat izveidot savienojumu ar atkļūdošanas serveri, ja atverat failu "Fails: izveidot savienojumu ar attālo stub" un teksta laukā ievadāt šādu rindiņu: tcp:Port=5005,Serveris=192.168.127.138

15. attēls. Savienojuma izveide ar atkļūdošanas serveri

Pēc savienojuma izveides jūs nesaņemsiet nekādus signālus, ka esat izveidojis savienojumu, bet, ja dodaties uz "File:Attach to a Process", jūs redzēsit atkļūdošanas servera procesu sarakstu (kur darbojas dbgsrv.exe). Tagad varat iesaistīties procesā tā, it kā jūs to darītu lokāli.

Palīdzības sistēma

WinDBG palīdzības sistēma ir lieliska. Papildus kaut kā jauna apgūšanai jums vajadzētu būt iespējai iegūt palīdzības informāciju par komandu. Izmantojiet komandu .hh, lai piekļūtu WinDBG palīdzībai:

Varat arī iegūt palīdzības informāciju par konkrētu komandu. Piemēram, lai saņemtu palīdzību par komandu .reload, izmantojiet šo komandu:

windbg> .hh .reload

Vai vienkārši dodieties uz sadaļu "Palīdzība: Saturs".

Moduļi

Kamēr programma darbojas, tiek importēti dažādi moduļi, kas nodrošina aplikācijas funkcionalitāti. Tāpēc, ja zināt, kurus moduļus importē lietojumprogramma, varat labāk izprast, kā tā darbojas. Daudzos gadījumos jūs atkļūdosit konkrēto programmas ielādēto moduli, nevis pašu izpildāmo failu.

Kad ir izveidots savienojums ar procesu, WinDBG automātiski parādīs ielādētos moduļus. Piemēram, tālāk ir norādīti moduļi pēc tam, kad esmu izveidojis savienojumu ar calc.exe:

Microsoft (R) Windows atkļūdotāja versija 6.12.0002.633 X86
Autortiesības (c) Microsoft Corporation. Visas tiesības aizsargātas.

*** pagaidiet ar gaidošu pievienošanu
Simbolu meklēšanas ceļš ir: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
Izpildāmais meklēšanas ceļš ir:
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

Vēlāk atkļūdošanas procesā šo sarakstu var parādīt vēlreiz, izmantojot komandu lmf:

0:005>lmf
sākuma beigu moduļa nosaukums
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 VERSIJA 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 secost C:\Windows\SYSTEM32\sechost.dll
75c00000 75ccc000 MSCTF C:\Windows\system32\MSCTF.dll
75cd0000 75d1e000 GDI32 C:\Windows\system32\GDI32.dll
75e60000 75ee3000 CLBCatQ C:\Windows\system32\CLBCatQ.DLL
75fa0000 76069000 USER32 C:\Windows\system32\USER32.dll
76270000 762ff000 OLEAUT32 C:\Windows\system32\OLEAUT32.dll
76300000 76357000 SHLWAPI C:\Windows\system32\SHLWAPI.dll
76360000 76401000 RPCRT4 C:\Windows\system32\RPCRT4.dll
76410000 77059000 SHELL32 C:\Windows\system32\SHELL32.dll
77240000 772ec000 msvcrt C:\Windows\system32\msvcrt.dll
774b0000 7754d000 USP10 C:\Windows\system32\USP10.dll
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll
77630000 7776c000 ntdll C:\Windows\SYSTEM32\ntdll.dll
77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
777b0000 777ba000LPK C:\Windows\system32\LPK.dll
777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

Varat arī uzzināt konkrēta moduļa lejupielādes adresi, izmantojot komandu "lmf m":

0:005> lmf m kodols32
sākuma beigu moduļa nosaukums
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll

Informāciju par konkrēta moduļa attēla galveni var iegūt arī, izmantojot paplašinājumu !dh ( Izsaukuma zīme norāda paplašinājumu):

0:005> !dh kodols32

Faila tips: DLL
FAILA GALVENES VĒRTĪBAS
14C mašīna (i386)
4 sadaļu skaits
4A5BDAAD laika datuma zīmogs Pirm. jūlijs 13 21:09:01 2009

0 faila rādītājs uz simbolu tabulu
0 simbolu skaits
Izvēles galvenes izmērs E0
2102 raksturlielumi
Izpildāms
32 bitu vārdu mašīna
DLL

IZVĒLES GALVENES VĒRTĪBAS
10 B maģija#
9.00 linkera versija
C4600 izmēra kods
C800 inicializēto datu izmērs
0 uninicializētu datu lielums
510C5 ieejas punkta adrese
1000 bāzes kods
----- jauns -----
77550000 attēlu bāze
1000 sekciju izlīdzināšana
200 failu izlīdzināšana
3 apakšsistēma (Windows CUI)
6.01 operētājsistēmas versija
6.01 attēla versija
6.01 apakšsistēmas versija
D4000 izmēra attēls
800 izmēra galvenes
D5597 kontrolsumma
00040000 kaudzes rezerves lielums
00001000 steka lielums
00100000 kaudzes rezerves lielums
00001000 kaudzes saistību lielums
140 DLL raksturlielumi
dinamiska bāze
Saderīgs ar NX
B4DA8 [A915] eksporta direktorija adrese
BF6C0 [ 1F4] importēšanas direktorija adrese
C7000 [ 520] resursu direktorijas adrese
0 [ 0] Izņēmumu direktorija adrese
0 [0] Drošības direktorija adrese
C8000 [B098] bāzes pārvietošanas direktorija adrese
C5460 [ 38] atkļūdošanas direktorija adrese
0 [ 0] aprakstu direktorija adrese
0 [ 0] īpašā direktorija adrese
0 [ 0] pavedienu glabāšanas direktorija adrese
816B8 [ 40] ielādes konfigurācijas direktorija adrese
278 [ 408] Bound Import Directory adrese
1000 [DE8] importa adrešu tabulas direktorija adrese
0 [ 0] Delay Import Directory adrese
0 [ 0] COR20 galvenes direktorija adrese
0 [0] Rezervētā direktorija adrese

SADAĻAS AUGSME Nr. 1
.teksta nosaukums
C44C1 virtuālais izmērs
1000 virtuālās adreses
C4600 neapstrādāto datu izmērs
800 faila rādītājs uz neapstrādātiem datiem

0 pārvietošanu skaits
0 rindu numuru skaits
60000020 karogi
Kods
(līdzinājums nav norādīts)
Izpildiet Lasīt

Atkļūdošanas direktoriji (2)
Ierakstiet Izmērs Adreses rādītājs
cv 25 c549c c4c9c Formāts: RSDS, guid, 2, kernel32.pdb
(10) 4 c5498 c4c98

SADAĻAS AUGSME Nr. 2
.datu nosaukums
FEC virtuālais izmērs
C6000 virtuālā adrese
E00 neapstrādāto datu izmērs
C4E00 faila rādītājs uz neapstrādātiem datiem
0 faila rādītājs uz pārvietošanas tabulu
0 faila rādītājs uz rindu numuriem
0 pārvietošanu skaits
0 rindu numuru skaits
C0000040 karogi
inicializēti dati
(līdzinājums nav norādīts)
Lasīt rakstīt

SADAĻAS APRAKSTS Nr. 3
.rsrc nosaukums
520 virtuālais izmērs
C7000 virtuālā adrese
600 neapstrādātu datu izmērs
C5C00 faila rādītājs uz neapstrādātiem datiem
0 faila rādītājs uz pārvietošanas tabulu
0 faila rādītājs uz rindu numuriem
0 pārvietošanu skaits
0 rindu numuru skaits
40000040 karogi
inicializēti dati
(līdzinājums nav norādīts)
Tikai lasīt

SADAĻAS APRAKSTS Nr. 4
.relocname
B098 virtuālais izmērs
C8000 virtuālā adrese
Neapstrādātu datu izmērs B200
C6200 faila rādītājs uz neapstrādātiem datiem
0 faila rādītājs uz pārvietošanas tabulu
0 faila rādītājs uz rindu numuriem
0 pārvietošanu skaits
0 rindu numuru skaits
42000040 karogi
inicializēti dati
Izmetams
(līdzinājums nav norādīts)
Tikai lasīt

Ziņojumi un izņēmumi

Pēc pievienošanas procesam vispirms tiek parādīts moduļu saraksts un pēc tam var tikt parādīti citi ziņojumi. Piemēram, kad mēs pievienojam calc.exe, WinDBG automātiski iestata pārtraukuma punktu (kas ir tikai marķieris, ko izmanto lietojumprogrammas apturēšanai). Pārtraukuma punkta informācija tiek parādīta ekrānā:

(da8.b44): pārtraukuma norādījuma izņēmums — kods 80000003 (pirmā iespēja)

Šis konkrētais ziņojums ir izņēmums, proti, pirmās iespējas izņēmums. Būtībā izņēmums ir īpašs nosacījums, kas rodas programmas izpildes laikā. Pirmās iespējas izņēmums nozīmē, ka programma apstājās tūlīt pēc izņēmuma rašanās. Otrās iespējas izņēmums nozīmē, ka pēc izņēmuma parādīšanās tiks veiktas dažas darbības, un pēc tam programma pārtrauks darbu.

Reģistri

Pēc ziņojumu un izņēmumu parādīšanas atkļūdotājs izvada procesora reģistru stāvokli. Reģistri ir īpaši procesora mainīgie, kas glabā nelielas informācijas daļas vai izseko atmiņā esošās lietas stāvokli. Apstrādātājs var ļoti ātri apstrādāt informāciju šajos reģistros. Tas ir daudz ātrāk, nekā katru reizi iegūt informāciju par autobusu no RAM.

Pēc savienojuma izveides ar calc.exe WinDBG automātiski parāda informāciju par šādiem reģistriem:

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

Vēlāk šo informāciju varat dublēt vēlreiz, izmantojot komandu r:

0:005>r
eax=7ffd9000 ebx=00000000 ecx=00000000 edx=776cd23d esi=00000000 edi=00000000
eip=77663540 esp=02affd9c ebp=02affdc8 iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!DbgBreakPoint:
77663540 cc int 3

Ja mēs vēlamies iegūt konkrēta reģistra vērtību, mēs varam izpildīt šādu komandu:

0:005> r eax
eax=7ffd9000

Informāciju vienlaikus var iegūt no vairākiem reģistriem šādi:

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

Rādītājs uz instrukciju

Pēdējā komanda ir par darbības instrukcijām. Šeit tāpat kā komandas r gadījumā tiek parādīta informācija par to, kas satur EIP reģistru. EIP ir reģistrs, kurā atrodas nākamās instrukcijas, kas jāizpilda procesoram, atrašanās vieta. Tas, ko parāda WinDBG, ir līdzvērtīgs komandai u eip L1, pēc kuras WinDBG dodas uz EIP reģistrā norādīto adresi, pārvērš šo sadaļu montāžas kodā un parāda to ekrānā.

ntdll!DbgBreakPoint:
77663540 cc int 3

uzturēt kontaktus

Nākamajos rakstos mēs apskatīsim, kā izmantot WinDBG cīņā: pārtraukuma punkti, pakāpeniska atkļūdošana un apskates atmiņa. Nepārslēdzies! Dž.

Atkļūdošanas rīki operētājsistēmai Windows- Darbības koda atkļūdošanas rīki Windows sistēmas. Tie ir Microsoft brīvi izplatītu programmu komplekts, kas paredzēts lietotāja režīma un kodola režīma koda atkļūdošanai: lietojumprogrammas, draiveri, pakalpojumi, kodola moduļi. Rīku komplektā ir iekļauti konsoles un GUI atkļūdotāji, utilītas darbam ar simboliem, faili, procesi, utilītas attālai atkļūdošanai. Rīku komplektā ir utilītas, ar kurām var atrast dažādu sistēmas komponentu kļūmju cēloņus. Atkļūdošanas rīki operētājsistēmai Windows no noteikta brīža nav pieejami lejupielādei atsevišķa izplatīšanas veidā un ir daļa no Windows SDK (Windows programmatūras izstrādes komplekta). Instrumentālais komplekts Windows rīki Savukārt SDK ir pieejams kā daļa no MSDN abonēšanas programmas vai arī to var brīvi lejupielādēt kā atsevišķu izplatīšanu no msdn.microsoft.com. Saskaņā ar izstrādātāju teikto, jaunākā un visjaunākā Windows atkļūdošanas rīku versija ir iekļauta Windows SDK.

Atkļūdošanas rīki operētājsistēmai Windows tiek atjaunināti un publiski pieejami diezgan bieži, un šis process nav atkarīgs no operētājsistēmu izlaišanas. Tāpēc periodiski pārbaudiet, vai nav pieejamas jaunas versijas.

Tagad apskatīsim, kam īpaši paredzēti atkļūdošanas rīki Microsoft Windows:

  • Vietējo lietojumprogrammu, pakalpojumu (pakalpojumu), draiveru un kodola atkļūdošana;
  • Atkļūdot attālās lietojumprogrammas, pakalpojumus (pakalpojumus), draiverus un kodolu tīklā;
  • Atkļūdojiet darbojošās lietojumprogrammas reāllaikā;
  • Analizējiet lietojumprogrammu, kodola un visas sistēmas atmiņas dump failus;
  • Darbs ar sistēmām, kuru pamatā ir x86/x64/Itanium arhitektūra;
  • Atkļūdot lietotāja režīma un kodola režīma programmas;

Ir pieejamas šādas Windows atkļūdošanas rīku versijas: 32 bitu x86, Intel Itanium, 64 bitu x64. Mums ir nepieciešami divi no tiem: x86 vai x64.

Ir vairāki veidi, kā instalēt atkļūdošanas rīkus operētājsistēmai Windows, šajā rakstā mēs apsvērsim tikai galvenos:

  • Instalēšana, izmantojot tīmekļa instalētāju.
  • Atkļūdošanas rīku instalēšana operētājsistēmai Windows no ISO Windows attēls SDK.
  • Atkļūdošanas rīku instalēšana operētājsistēmai Windows tieši no pakotnēm dbg_amd64.msi /dbg_x86.msi.

Joprojām nav skaidrs, kurā brīdī, kāpēc man datorā jāinstalē atkļūdošanas rīki? Galu galā bieži nākas saskarties ar situāciju, kad iejaukšanās darba vidē ir ārkārtīgi nevēlama! Un vēl jo vairāk tāpēc, ka jauna produkta instalēšana, tas ir, izmaiņu veikšana reģistra/sistēmas failos, var būt pilnīgi nepieņemama. Piemēri ir misijai kritiskie serveri. Kāpēc izstrādātāji neapsver iespēju pārnēsāt lietojumprogrammu versijas, kurām nav nepieciešama instalēšana?
No versijas uz versiju Windows atkļūdošanas rīku pakotnes instalēšanas procesā tiek veiktas dažas izmaiņas. Tagad pāriesim tieši uz instalēšanas procesu un apskatīsim veidus, kā rīkkopu var instalēt.

Atkļūdošanas rīku instalēšana operētājsistēmai Windows, izmantojot tīmekļa instalēšanas programmu

Dodieties uz Windows SDK arhīva lapu un atrodiet sadaļu ar nosaukumu Windows 10 un zem vienuma "Windows 10 SDK (10586) un Microsoft Windows 10 Mobile Device Emulator (versija 10586.11)".

Noklikšķiniet uz vienuma INSTALLĒT SDK. Pēc noklikšķināšanas lejupielādējiet un palaidiet failu sdksetup.exe, kas uzsāk Windows SDK tiešsaistes instalēšanas procesu. Sākotnējā posmā instalētājs pārbaudīs, vai sistēmā ir instalēta .NET Framework pakotne jaunākā versija(iekš Šis brīdis tas ir 4,5). Ja pakotnes trūkst, instalēšana tiks piedāvāta, un stacija tiks atsāknēta, kad tā būs pabeigta. Tūlīt pēc atsāknēšanas, lietotāja autorizācijas posmā, instalēšanas process sākas tieši ar Windows SDK.

Bieži vien, izvēloties visas pakotnes sastāvdaļas bez izņēmuma, instalēšanas procesā var rasties kļūdas. Šajā gadījumā ir ieteicams komponentus uzstādīt selektīvi, minimālais nepieciešamais komplekts.

Kad Windows atkļūdošanas rīku instalēšana ir pabeigta, atkļūdošanas failu atrašanās vieta, kad šī metode mūsu uzstādīšana būs šāda:

  • 64 bitu versijas: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • 32 bitu versijas: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x86

* kur x.x ir konkrēta izstrādes komplekta versija;
Mēs pamanījām, ka versijās 8 un jaunākās instalācijas ceļi visiem ievērojami atšķiras no klasiskajiem iepriekšējās versijas atkļūdošanas rīki?

Milzīgs pluss šī metode Atkļūdošanas rīku instalēšana operētājsistēmai Windows nozīmē atkļūdošanas rīku versiju instalēšanu visām arhitektūrām vienlaikus.

Atkļūdošanas rīku instalēšana operētājsistēmai Windows no Windows SDK ISO

Šī metode ietver atkļūdošanas rīku instalēšanu operētājsistēmai Windows, izmantojot pilnu Windows SDK (Software Developers Kit) instalācijas attēlu. Līdz noteiktam laikam lejupielādējiet iso attēls Atbilstošajai sistēmai varat apmeklēt Windows SDK arhīva lapu. Tomēr pašlaik varat iegūt SDK ISO attēlu, palaižot tīmekļa instalēšanas programmu sdksetup.exe un atlasot vienumu. Lejupielādējiet Windows programmatūras izstrādes komplektu instalēšanas programmas sākuma logā:

Kā tika noskaidrots, iepriekšējā instalēšanas metode, izmantojot tīmekļa instalēšanas programmu, ir diezgan kaprīza un bieži neizdodas. Tīrās sistēmās tas tiek instalēts bez problēmām, bet pietiekami noslogotās sistēmās rodas daudzas problēmas. Ja tas tā ir jūsu gadījumā, izmantojiet šo metodi.

Attiecīgi lapā jāizvēlas nepieciešamais izplatīšanas komplekts, man (un domāju, ka daudziem) šobrīd tas ir "Windows SDK operētājsistēmai Windows 7 un .NET Framework 4" un nedaudz zemāk noklikšķiniet uz saites "Iegūt DVD ISO attēls".

Strādājot ar vietni msdn.microsoft.com, iesaku izmantot pārlūkprogrammu Internet Explorer, jo ir novēroti konkurējošo preču nestrādāšanas gadījumi!

Attiecīgi ir jāizvēlas tikai pēc nepieciešamības. Parasti Windows atkļūdošanas rīku bitums ir tāds pats kā sistēmas bitums. Manas testa sistēmas pārsvarā ir 64 bitu, tāpēc vairumā gadījumu es lejupielādēju attēlu 64 bitu sistēmai GRMSDKX_EN_DVD.iso .
Pēc tam pēc attēla lejupielādes mums kaut kā jāstrādā ar esošo ISO attēlu. Tradicionālais veids, protams, ir CD ierakstīšana, taču tā ir diezgan ilga un dažreiz dārga metode. Es iesaku izmantot bezmaksas utilītus virtuālo disku ierīču izveidei sistēmā. Personīgi es šim nolūkam dodu priekšroku DEAMON Tools Lite programmai. Kādam var būt citas preferences, tiešākas vai vieglas utilītas garšas un krāsas ziņā, kā saka. Pēc DAEMON Tools Lite instalēšanas es vienkārši veicu dubultklikšķi uz attēla faila GRMSDKX_EN_DVD.iso, un man ir jauns virtuālais kompaktdisks:

Pēc tam, veicot dubultklikšķi, es aktivizēju automātisko ielādi un sāku Windows SDK instalēšanu:

Kad pienāk kārta no saraksta atlasīt instalējamos komponentus, mēs atspējojam pilnīgi visas opcijas, izņemot tās, kas atzīmētas ekrānuzņēmumā. Tas mums tagad palīdzēs izvairīties no nevajadzīgām kļūdām.


Tieši tā, ekrānuzņēmumā ir redzamas divas iespējas: "Windows veiktspējas rīkkopa" un "Windows atkļūdošanas rīki". Izvēlieties abus, jo Windows Performance Toolkit noteikti noderēs jūsu darbā! Turklāt, noklikšķinot uz pogas "Tālāk", instalēšana turpinās parastajā režīmā. Un beigās jūs redzēsit uzrakstu "Instalācija pabeigta".
Pēc instalēšanas pabeigšanas Windows atkļūdošanas rīku komplekta darba direktoriji būs šādi:

  • x86 versijai:
  • x64 versijai:

Tas pabeidz Windows atkļūdošanas rīku instalēšanu.

Atkļūdošanas rīku instalēšana operētājsistēmai Windows, izmantojot .msi failu

Problēmu gadījumā, instalējot Windows atkļūdošanas rīkus divos iepriekšējos veidos, mums joprojām ir vēl viens, visuzticamākais un laika pārbaudītākais, kas, tā sakot, palīdzēja vairāk nekā vienu reizi. Kādreiz, pirms integrācijas Windows SDK, atkļūdošanas rīki operētājsistēmai Windows bija pieejami kā atsevišķs .msi instalēšanas programma, kuru joprojām var atrast, taču jau Windows SDK izplatījumā. Tā kā mums jau ir pieejams Windows SDK ISO attēls, mēs to nevaram uzstādīt sistēmā, bet vienkārši atvērt, izmantojot labi zināmo WinRAR arhivētāju vai jebkuru citu produktu, kas darbojas ar ISO disku saturu.

Pēc attēla atvēršanas mums jāiet uz direktoriju "Iestatīšana", kas atrodas saknē, un pēc tam atlasiet vienu no direktorijiem:

  • Lai instalētu 64 bitu versiju: \Setup\WinSDKDebuggingTools_amd64 un izpakojiet failu dbg_amd64.msi no šī direktorija.
  • Lai instalētu 32 bitu versiju: ​​\Setup\WinSDKDebuggingTools un izpakojiet failu dbg_x86.msi no šī direktorija.

Pēc instalēšanas pabeigšanas Windows atkļūdošanas rīku komplekta darba direktoriji būs šādi:

  • x86 versijai: C:\Program Files (x86)\Atkļūdošanas rīki operētājsistēmai Windows (x86)
  • x64 versijai: C:\Program Files\Atkļūdošanas rīki operētājsistēmai Windows (x64)

Šajā brīdī Windows atkļūdošanas rīku instalēšanu var uzskatīt par pabeigtu.

Papildus informācija

Nezinu ar ko tas ir saistīts, varbūt ar manu neuzmanību, bet pēc Windows atkļūdošanas rīku instalēšanas instalēšanas programma Path system path mainīgajā nenosaka ceļu uz direktoriju ar atkļūdotāju. Tas uzliek noteiktus ierobežojumus dažādu atkļūdošanas uzdevumu izpildei tieši no konsoles. Tāpēc, ja nav ceļa, es pats rakstu logā Vides mainīgie ceļš uz atkļūdošanas rīkiem:

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

* Jūsu gadījumā ceļi var atšķirties gan tāpēc, ka tiek izmantota cita bituma OS, gan tāpēc, ka tiek izmantots citas versijas SDK.

Windows pakotnes atkļūdošanas rīku utilītas var darboties kā pārnēsājamas lietojumprogrammas, jums vienkārši jākopē direktorijs no darba sistēmas Microsoft Windows veiktspējas rīkkopa un izmantot to kā portatīvo versiju ražošanas serverī. Bet neaizmirstiet ņemt vērā sistēmas jaudu !! Pat ja esat veicis pilnīgu pakotnes instalēšanu kritiskā sistēmā, varat sākt strādāt uzreiz pēc instalēšanas, nav nepieciešama pārstartēšana.

Atkļūdošanas rīki operētājsistēmai Windows

Un tagad, visbeidzot, šeit ir Windows atkļūdošanas rīku sastāvs:

Fails Mērķis
adplus.doc ADPlus utilīta dokumentācija.
adplus.exe Konsoles lietojumprogramma, kas automatizē cdb atkļūdotāja darbu, lai izveidotu izgāztuves, žurnālfailus vienam vai vairākiem procesiem.
agestore.exe Lietderība novecojušu failu noņemšanai no krātuves, ko izmanto simbolu serveris vai avota serveris.
breakin.exe Lietderība, kas ļauj procesiem nosūtīt pielāgotu pārtraukumu kombināciju, līdzīgi kā nospiežot CTRL+C.
cdb.exe Lietotāja režīma konsoles atkļūdotājs.
convertstore.exe Lietderība, lai pārveidotu rakstzīmes no 2 līmeņiem uz 3 līmeņiem.
dbengprx.exe Ripiter (starpniekserveris) attālai atkļūdošanai.
dbgpc.exe Lietderība informācijas parādīšanai par RPC zvana statusu.
dbgsrv.exe Servera process, ko izmanto attālai atkļūdošanai.
dbh.exe Lietderība informācijas parādīšanai par simbolu faila saturu.
dumpchk.exe Izgāztuves verifikācijas utilīta. Lietderība ātrai izgāztuves faila pārbaudei.
dumpexam.exe Lietderība atmiņas izgāztuves analīzei. Rezultāts tiek izvadīts uz %SystemRoot%\MEMORY.TXT.
gflags.exe Globālo sistēmu karogu redaktors. Lietderība pārvalda reģistra atslēgas un citus iestatījumus.
i386kd.exe Iesaiņojums priekš kd. Vai tas bija tas, ko kd kādreiz sauca uz Windows NT/2000 balstītām sistēmām x86 iekārtām? Iespējams, atstāts saderības apsvērumu dēļ.
ia64kd.exe Iesaiņojums priekš kd. Vai tas bija tas, ko kd kādreiz sauca uz Windows NT/2000 balstītām sistēmām ia64 iekārtām? Iespējams, atstāts saderības apsvērumu dēļ.
kd.exe Kodola režīma konsoles atkļūdotājs.
kdbgctrl.exe Kodola atkļūdošanas pārvaldības rīks. Lietderība kodola atkļūdošanas savienojuma pārvaldībai un konfigurēšanai.
kdsrv.exe Savienojuma serveris priekš KD. Lietderība ir neliela lietojumprogramma, kas darbojas un gaida attālos savienojumus. kd darbojas klientā un izveido savienojumu ar šo serveri attālai atkļūdošanai. Gan serverim, gan klientam ir jābūt no viena un tā paša atkļūdošanas rīku komplekta.
kill.exe Lietderība procesu pabeigšanai.
list.exe Lietderība faila satura parādīšanai ekrānā. Šī miniatūra utilīta tika komplektēta ar vienu mērķi - lielu teksta vai žurnālfailu skatīšanu. Tas aizņem maz vietas atmiņā, jo ielādē tekstu pa daļām.
logger.exe Neliels atkļūdotājs, kas var darboties tikai ar vienu procesu. Lietderība ievada logexts.dll procesa telpā, kas reģistrē visus funkciju izsaukumus un citas pārbaudāmās programmas darbības.
logviewer.exe Lietderība logger.exe atkļūdotāja rakstīto žurnālu apskatei.
ntsd.exe Microsoft NT simboliskais atkļūdotājs (NTSD). Atkļūdotājs, kas ir identisks cdb, izņemot to, ka startēšanas laikā tas izveido teksta logu. Tāpat kā cdb, ntsd spēj atkļūdot gan konsoles lietojumprogrammas, gan grafiskās lietojumprogrammas.
pdbcopy.exe Lietderība privāto simbolu noņemšanai no simbolu faila, simbolu failā iekļauto publisko simbolu kontrolei.
remote.exe Lietderība attālai atkļūdošanai un jebkura KD, CDB un NTSD konsoles atkļūdotāja tālvadībai. Ļauj attālināti palaist visus šos konsoles atkļūdotājus.
rtlist.exe Attālais uzdevumu skatītājs. Lietderība tiek izmantota, lai uzskaitītu darbojošos procesus, izmantojot DbgSrv servera procesu.
symchk.exe Lietderība simbolu lejupielādei no Microsoft simbolu servera un lokālas simbolu kešatmiņas izveidošanai.
symstore.exe Lietderība tīkla vai lokālas simbolu krātuves izveidei (2 līmeņi/3 līmeņi). Simbolu veikals ir specializēts direktorijs diskā, kas ir izveidots saskaņā ar noteiktu struktūru un satur simbolus. Simbolu saknes direktorijā tiek izveidota apakšmapes struktūra ar nosaukumiem, kas ir identiski komponentu nosaukumiem. Savukārt katrā no šīm apakšmapēm ir ligzdotas apakšmapes ar īpašiem nosaukumiem, kas iegūti, jaukjot bināros failus. Symstore utilīta skenē komponentu mapes un pievieno jaunus komponentus simbolu krātuvei, kur tos var izgūt jebkurš klients. Symstore tiek izmantots, lai iegūtu simbolus no 0 līmeņa krātuves un ievietotu tos 2 līmeņu/3 līmeņu krātuvē.
tlist.exe Uzdevumu skatītājs. Lietderība visu darbojošos procesu uzskaitīšanai.
umdh.exe Lietotāja režīma izgāztuves utilīta. Lietderība atlasītā procesa kaudžu analīzei. Ļauj parādīt dažādas kaudzes opcijas.
usbview.exe USB skatītājs. Lietderība datoram pievienoto USB ierīču apskatei.
vmdemux.exe Virtuālās mašīnas demultiplekseris. Izveido vairākas nosauktas caurules vienam COM savienojumam. Kanāli tiek izmantoti dažādu virtuālās mašīnas komponentu atkļūdošanai
windbg.exe Lietotāja režīma un kodola režīma atkļūdotājs ar GUI.

Lai identificētu cēloņus, zilie ekrāni(BSOD) ir jāanalizē atmiņas dump. Lielākajā daļā gadījumu pietiek ar minidump, ko sistēma izveido kritisku kļūdu gadījumā.
Šis raksts satur soli pa solim instrukcija WinDBG instalēšanai un konfigurēšanai - jaudīgs atkļūdošanas rīks, kas ļauj noteikt patieso BSOD cēloni.

1. darbība — mazas atmiņas izplūdes ierakstīšanas iestatīšana

2. darbība — WinDBG instalēšana

Lai analizētu atmiņas izgāztuves, jums būs jāinstalē WinDBG atkļūdotājs, kas ir iekļauts Windows SDK. Rakstīšanas laikā jaunākais pieejamais Windows versijas SDK:

  • Windows 10 SDK (lejupielādējiet tiešsaistes instalēšanas programmu)
  • Windows 8.1 SDK (lejupielādējiet tiešsaistes instalēšanas programmu)

3. darbība — .dmp failu kartēšana uz WinDBG

Kartējiet savus .dmp failus ar WinDBG, lai būtu vieglāk lasīt un analizēt atmiņas izgāztuves. Tas ļaus jums atvērt izgāztuves failus no Explorer tieši programmā WinDBG, apejot tā sākotnējo palaišanu.


4. darbība — Simbolu servera iestatīšana, lai saņemtu atkļūdošanas simbolu failus


WinDBG instalēšana un sākotnējā konfigurēšana tagad ir pabeigta. Lai mainītu tā izskatu, varat doties uz izvēlni skats- fontu iestatījumus atradīsit, atlasot vienumu Fonts un konsoles loga iestatījumus Iespējas.




Tops