Instrumente de depanare pentru utilizarea Windows. Instrumente de depanare Windows: diagnosticarea și remedierea BSOD-urilor. Configurați-vă sistemul

22 iunie 2010

Anterior Windbg era disponibil separat pentru descărcare. Dar pentru cele mai recente versiuni, Microsoft îl păstrează ca parte a SDK-ului Windows. Vă rugăm să găsiți mai jos linkurile de descărcare.

Windows 10

Cea mai recentă versiune de Windbg pentru Windows 7 poate fi descărcată de la linkul https://developer.microsoft.com/en-us/windows/downloads/windows-10-sdk

Windows 7

Descărcați programe de instalare de la linkurile de mai sus. Rețineți că acest lucru nu descarcă întregul SDK, este doar un program de instalare. După ce rulați fișierul, puteți selecta ce instrumente doriți să fie descărcate. Dacă sunteți interesat doar de Windbg, puteți exclude orice altceva și puteți selecta doar „Instrumente de depanare” sub „Utilități comune”

Pachetul de mai sus instalează versiunea windbg 6.12. Dacă doriți să instalați rapid windbg, puteți alege o versiune mai veche (6.11), care poate fi descărcată de pe
link-ul dat la sfârșitul acestei postări.

Odată ce ați făcut instalarea, puteți găsi programul în Meniul Start -> Toate programele -> Instrumente de depanare pentru Windows -> Windbg

Introducere în WinDBG - Partea 1

Alexandru Antipov

WinDBG este un depanator grozav. Este posibil să nu aibă o interfață foarte ușor de utilizat și să nu aibă fundal negru în mod implicit, dar este unul dintre cele mai puternice și mai stabile programe de depanare de pe Windows în prezent. În acest articol, vă voi prezenta elementele de bază ale WinDBG, astfel încât să puteți începe cu el.


WinDBG este un depanator grozav. Este posibil să nu aibă o interfață foarte ușor de utilizat și să nu aibă fundal negru în mod implicit, dar este unul dintre cele mai puternice și mai stabile programe de depanare de pe Windows în prezent. În acest articol, vă voi prezenta elementele de bază ale WinDBG, astfel încât să puteți începe cu el.

Acesta este primul articol dintr-o serie despre WinDBG. Lista tuturor articolelor incluse în această serie:

  • Partea 1 - instalare, interfață, simboluri, depanare la distanță/locală, sistem de ajutor, module, registre.
  • Partea 2 - puncte de întrerupere.
  • Partea 3 - inspecția memoriei, depanarea pas cu pas a programului, sfaturi și trucuri.

În acest articol ne vom uita la montarea și atașarea la un proces, iar în cele ce urmează vom acoperi punctele de întrerupere, un singur pas și inspecția memoriei.

Instalarea WinDBG

În comparație cu Windows 7, procesul de instalare pentru WinDBG în Windows 8 s-a schimbat ușor. În această secțiune, vom trata instalarea depanatorului pentru ambele sisteme de operare.

Instalarea WinDBG pe Windows 8

În Windows 8, WinDBG este inclus în Windows Driver Kit (WDK). Puteți instala Visual Studio și WDK sau puteți instala separat pachetul Instrumente de depanare pentru Windows 8.1, care include WinDBG.

Programul de instalare vă va întreba dacă doriți să instalați WinDBG local sau să descărcați întregul pachet de dezvoltare pentru un alt computer. Acesta din urmă este în esență echivalentul unui program de instalare autonom, ceea ce este foarte util dacă doriți să instalați pachetul pe alte sisteme în viitor.

Figura 1: Selectarea tipului de instalare

În fereastra următoare, trebuie să debifați toate elementele, cu excepția „Instrumente de depanare pentru Windows” și să faceți clic pe butonul „Descărcare”.

Odată ce programul de instalare și-a încheiat munca, mergeți la directorul de unde a fost descărcat pachetul (în mod implicit este c:\Users\Username\Downloads\Windows Kits\8.1\StandaloneSDK) și parcurgeți procedura de instalare.

Instalarea WinDBG pe Windows 7 și versiuni anterioare

Pentru Windows 7 și versiuni anterioare, WinDBG face parte din pachetul „Instrumente de depanare pentru Windows”, care este inclus cu Windows SDK și .Net Framework. Vi se va solicita să descărcați programul de instalare și apoi să selectați „Instrumente de depanare pentru Windows” în timpul procesului de instalare.

În timpul instalării, selectez opțiunea „Instrumente de depanare” din „Pachete redistribuibile” pentru a crea un program de instalare autonom pentru a facilita instalările ulterioare.

Figura 2: Selectarea opțiunilor de instalare pentru a crea un program de instalare autonom

După finalizarea instalării, ar trebui să aveți programe de instalare WinDBG pentru diferite platforme (în directorul c:\Program Files\Microsoft SDKs\Windows\v7.1\Redist\Debugging Tools for Windows\).

Figura 3: Folder cu programe de instalare WinDBG pentru diverse platforme

Interfața WinDBG

Figura 4: Aspectul WinDBG

Odată ce vedeți pentru prima dată aspectul WinDGB, veți realiza că depanatorul este înfricoșător de simplu. Cele mai multe dintre funcțiile WinDBG sunt învățate în timpul procesului de depanare. În loc să pierdem timpul descriind interfața, în secțiunile următoare vom acoperi doar cele mai importante puncte.

Cel mai elementar lucru pe care trebuie să-l știți despre interfața depanatorului este fereastra de comandă, care constă din două zone. Prima zonă: o fereastră în care este afișat rezultatul executării comenzilor. A doua zonă: un mic câmp de text pentru introducerea comenzilor.

Figura 5: Fereastra de comandă WinDBG

Simboluri

În cele mai multe cazuri, WinDBG nu necesită setări speciale și funcționează corect imediat din cutie. Dar un lucru important care trebuie modificat sunt simbolurile. Simbolurile sunt fișiere care sunt generate împreună cu fișierul executabil în timpul compilării programului și conțin informații de depanare (funcții și nume de variabile). Informațiile de depanare vă permit să explorați funcționalitatea unei aplicații în timp ce depanați sau dezasamblați. Multe componente Microsoft sunt compilate cu simboluri care sunt distribuite prin Microsoft Symbol Server. Cu restul fișierelor executabile, totul nu este atât de roz - foarte rar fișierele cu informații de depanare sunt incluse în aplicație. În cele mai multe cazuri, companiile restricționează accesul la astfel de informații.

Pentru a configura WinDBG să utilizeze Microsoft Symbol Server, accesați secțiunea File:Symbol File Path și setați calea la SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols. Desigur, este puțin ciudat că asteriscurile sunt folosite ca delimitator. După ce ați configurat Microsoft Symbol Server, simbolurile vor fi descărcate în folderul C:\Symbols.

Figura 6: Configurarea Microsoft Symbol Server

WinDBG va încărca automat simboluri pentru fișierele binare atunci când este necesar. De asemenea, puteți adăuga propriul dosar cu simboluri astfel:

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

Adăugarea de simboluri în timpul depanării

Dacă trebuie să importați simboluri în timpul depanării, puteți face acest lucru cu .sympath (fereastra de comandă va apărea când vă conectați la proces). De exemplu, pentru a adăuga folderul c:\SomeOtherSymbolFolder, introduceți următoarea comandă:

0:025> .sympath+ c:\SomeOtherSymbolFolder
Calea de căutare a simbolurilor este: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;c:\SomeOtherSymbolFolder
Calea de căutare a simbolului extins este: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\someothersymbolfolder

Este o idee bună să reîncărcați simbolurile după adăugarea sau schimbarea căilor:

0:025> .reîncărcare
Reîncărcarea modulelor curente
................................................................
...............................................

Verificarea simbolurilor încărcate

Pentru a vedea ce module au simboluri încărcate, puteți folosi comanda x*! Deși WinDBG încarcă simboluri numai după cum este necesar, x*! va afișa simboluri care pot fi încărcate. Este posibil să forțați încărcarea simbolurilor folosind comanda ld * (acest lucru poate dura ceva timp și puteți opri acest proces accesând Debug:Break).

Acum putem vedea simbolurile pentru fiecare modul.

Figura 8: Lista simbolurilor

Depanarea unui proces local

Când depanați un proces local, aveți două opțiuni:

  1. Atașați la un proces care rulează deja.
  2. Procesul de lansare prin WinDBG.

Fiecare metodă are propriile sale avantaje și dezavantaje. Dacă, să zicem, rulați programul prin WinDBG, atunci aveți câteva opțiuni speciale de depanare disponibile (de exemplu, depanare heap) care pot cauza blocarea aplicației. Pe de altă parte, există și programe care se blochează atunci când le atașați un depanator. Unele aplicații (în special malware) verifică prezența unui depanator în sistem în timpul pornirii și, în consecință, în acest caz are sens să se agațe de un proces care rulează deja. Uneori există o depanare a unui serviciu Windows care setează niște parametri la momentul pornirii, așa că pentru a simplifica procesul de depanare, este mai bine să vă conectați la un proces care rulează, decât să porniți serviciul printr-un depanator. Unii oameni susțin că rularea unui proces printr-un depanator are un impact grav asupra performanței. Pe scurt, încercați pe amândouă și alegeți ceea ce vi se potrivește cel mai bine. Dacă dintr-un motiv oarecare preferați o anumită metodă, împărtășiți-vă gândurile în comentarii!

Demararea unui proces

Dacă depanați o aplicație autonomă care rulează local și nu este conectată la rețea, este posibil să doriți să o rulați prin WinDBG. Cu toate acestea, acest lucru nu înseamnă că nu vă puteți conecta la un proces care rulează deja. Alegeți cea mai convenabilă cale pentru dvs.

Începerea procesului nu este dificilă. Accesați „Fișier: Open Executable” și selectați executabilul pe care doriți să îl depanați. De asemenea, puteți furniza argumente sau seta directorul de pornire:

Figura 9: Selectarea unui executabil pentru depanare

Conexiune la proces

Conectarea la un proces care rulează deja nu este dificilă. Cu toate acestea, ar trebui să rețineți că, în unele cazuri, poate dura timp pentru a găsi exact procesul pe care doriți să îl depanați. De exemplu, unele browsere creează un proces părinte și apoi mai multe procese pentru fiecare filă. Așadar, în funcție de crash dump-ul pe care îl depanați, este posibil să doriți să vă conectați nu la procesul părinte, ci la procesul asociat filei.

Pentru a atașa la un proces care rulează deja, accesați „Fișier: Atașați la un proces” și apoi selectați PID-ul sau numele procesului. Amintiți-vă că trebuie să aveți drepturile corespunzătoare pentru a vă conecta la proces.

Figura 10: Selectarea unui proces la care să vă conectați

Dacă, după conectare, aplicația și-a suspendat funcționarea, puteți utiliza modul „Noninvaise” bifând caseta corespunzătoare.

Depanarea unui proces de la distanță

Uneori poate fi necesar să depanați un proces pe un sistem de la distanță. Ar fi mult mai convenabil să gestionați această sarcină cu un depanator local în loc să utilizați o mașină virtuală sau RDP. Sau poate depanați procesul LoginUI.exe, care este disponibil numai când sistemul este blocat. În astfel de situații, puteți utiliza versiunea locală a WinDBG și vă puteți atașa la procese de la distanță. Pentru a rezolva aceste probleme, există două metode cele mai comune.

Sesiuni de depanare existente

Dacă ați început deja depanarea programului local (prin atașarea sau lansarea unui proces prin WinDBG), atunci puteți introduce o comandă specifică și WinDBG va porni un „ascultător” (ascultător) la care depanatorul de la distanță se poate conecta. Pentru a face acest lucru, utilizați comanda .server:

Server tcp:port=5005

După rularea comenzii de mai sus, este posibil să vedeți un avertisment ca acesta:

Figura 11: Mesaj de avertizare care poate apărea după rularea comenzii pentru a crea un „ascultător”

Apoi WinDBG va raporta că serverul rulează:

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

Acum vă puteți conecta de la o gazdă la distanță la o sesiune de depanare deja existentă, mergând la „Fișier:Conectați-vă la o sesiune la distanță” și introducând ceva de genul acesta în câmpul de text: tcp:Port=5005,Server=192.168.127.138

Figura 12: Conexiune de la distanță la o sesiune de depanare

După conectare, veți primi confirmarea pe clientul de la distanță:


serverul a pornit. Clientul se poate conecta cu oricare dintre aceste linii de comandă
0: -remote tcp:Port=5005,Server=USER-PC
MACHINENAME\Utilizator (tcp 192.168.127.138:13334) conectat la Luni Dec 16 09:03:03 2013

și mesajul în versiunea locală a depanatorului:

MACHINENAME\Utilizator (tcp 192.168.127.138:13334) conectat la Luni Dec 16 09:03:03 2013

Creați un server la distanță

De asemenea, puteți crea un server WinDBG separat, vă puteți conecta la acesta de la distanță și puteți selecta un proces de depanat. Acest lucru se poate face folosind fișierul dbgsrv.exe unde intenționați să depanați procesele. Pentru a porni un astfel de server, executați următoarea comandă:

dbgsrv.exe -t tcp:port=5005

Figura 13: Pornirea unui server la distanță

Și din nou, este posibil să primiți un avertisment de securitate pe care ar trebui să îl acceptați:

Figura 14: Mesaj de securitate care poate apărea în timpul pornirii serverului de depanare

Vă puteți conecta la serverul de depanare dacă accesați fișierul „Fișier: Conectați-vă la Stub la distanță” și introduceți următorul rând în câmpul de text: tcp:Port=5005,Server=192.168.127.138

Figura 15: Conectarea la serverul de depanare

După conectare, nu veți primi niciun semnal că sunteți conectat, dar dacă mergeți la „Fișier:Atașați la un proces”, veți vedea o listă a proceselor serverului de depanare (unde rulează dbgsrv.exe). Acum vă puteți conecta la proces ca și cum l-ați face local.

Sistem de ajutor

Sistemul de ajutor din WinDBG este grozav. Pe lângă faptul că învățați ceva nou, ar trebui să puteți obține informații de ajutor despre o comandă. Utilizați comanda .hh pentru a accesa ajutorul WinDBG:

De asemenea, puteți obține informații de ajutor pentru o anumită comandă. De exemplu, pentru a obține ajutor pentru comanda .reload, utilizați următoarea comandă:

windbg> .hh .reîncărcare

Sau accesați secțiunea „Ajutor: Conținut”.

Module

În timp ce programul rulează, sunt importate diverse module care asigură funcționalitatea aplicației. Prin urmare, dacă știți ce module sunt importate de o aplicație, puteți înțelege mai bine cum funcționează. În multe cazuri, veți depana modulul specific încărcat de program, nu executabilul în sine.

Odată conectat la proces, WinDBG va afișa automat modulele încărcate. De exemplu, mai jos sunt modulele după ce m-am conectat la calc.exe:

Microsoft (R) Windows Debugger Versiunea 6.12.0002.633 X86
Drepturi de autor (c) Microsoft Corporation. Toate drepturile rezervate.

*** așteptați cu atașare în așteptare
Calea de căutare a simbolurilor este: SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
Calea de căutare executabilă este:
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

Mai târziu, în procesul de depanare, puteți afișa din nou această listă cu comanda lmf:

0:005>lmf
start end module name
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 VERSIUNEA C:\Windows\system32\VERSION.dll
756d0000 756dc000 CRYPTBASE C:\Windows\system32\CRYPTBASE.dll
75920000 7596a000 KERNELBASE C:\Windows\system32\KERNELBASE.dll
75a80000 75bdc000 ole32 C:\Windows\system32\ole32.dll
75be0000 75bf9000 sechost C:\Windows\SYSTEM32\sechost.dll
75c00000 75ccc000 MSCTF C:\Windows\system32\MSCTF.dll
75cd0000 75d1e000 GDI32 C:\Windows\system32\GDI32.dll
75e60000 75ee3000 CLBCatQ C:\Windows\system32\CLBCatQ.DLL
75fa0000 76069000 USER32 C:\Windows\system32\USER32.dll
76270000 762ff000 OLEAUT32 C:\Windows\system32\OLEAUT32.dll
76300000 76357000 SHLWAPI C:\Windows\system32\SHLWAPI.dll
76360000 76401000 RPCRT4 C:\Windows\system32\RPCRT4.dll
76410000 77059000 SHELL32 C:\Windows\system32\SHELL32.dll
77240000 772ec000 msvcrt C:\Windows\system32\msvcrt.dll
774b0000 7754d000 USP10 C:\Windows\system32\USP10.dll
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll
77630000 7776c000 ntdll C:\Windows\SYSTEM32\ntdll.dll
77770000 7778f000 IMM32 C:\Windows\system32\IMM32.DLL
777b0000 777ba000LPK C:\Windows\system32\LPK.dll
777c0000 77860000 ADVAPI32 C:\Windows\system32\ADVAPI32.dll

De asemenea, puteți afla adresa de descărcare pentru un anumit modul folosind comanda „lmf m”:

0:005> lmf m kernel32
start end module name
77550000 77624000 kernel32 C:\Windows\system32\kernel32.dll

De asemenea, puteți obține informații despre antetul imaginii unui anumit modul utilizând extensia !dh (punctul de exclamare indică o extensie):

0:005> !dh kernel32

Tip de fișier: DLL
VALORI ANTET FIȘIER
mașină 14C (i386)
4 număr de secțiuni
4A5BDAAD ștampila datei oră Luni 13 iulie 21:09:01 2009

0 file pointer către tabelul de simboluri
0 număr de simboluri
Dimensiunea E0 a antetului opțional
2102 caracteristici
Executabil
mașină de cuvinte pe 32 de biți
DLL

VALORI OPȚIONALE ANTET
10B magie#
Versiunea linker 9.00
Cod dimensiune C4600
Dimensiunea C800 a datelor inițializate
0 dimensiunea datelor neinițializate
510C5 adresa punctului de intrare
1000 cod de bază
----- nou -----
77550000 bază de imagini
aliniere de 1000 secțiuni
200 de aliniere a fișierelor
3 subsistem (Windows CUI)
Versiunea sistemului de operare 6.01
Versiunea imagine 6.01
Versiunea subsistemului 6.01
Imagine de dimensiune D4000
Anteturi de dimensiune 800
Suma de verificare D5597
00040000 dimensiunea rezervei stivei
00001000 dimensiunea comiterii stivei
00100000 dimensiunea rezervei de grămada
00001000 dimensiunea comiterii heap
140 caracteristici DLL
baza dinamica
Compatibil NX
B4DA8 [A915] adresa directorului de export
BF6C0 [ 1F4] adresa directorului de import
C7000 [ 520] adresa Directorului de resurse
0 [ 0] adresa directorului de excepții
0 [ 0] adresa Directorului de securitate
C8000 [B098] adresa directorului de relocare de bază
C5460 [ 38] adresa directorului de depanare
0 [ 0] adresa directorului de descriere
0 [ 0] adresa Directorului Special
0 [ 0] adresa directorului de stocare Thread
816B8 [ 40] adresa Load Configuration Directory
278 [ 408] adresa directorului de import legat
1000 [DE8] adresa din directorul tabelului de adrese de import
0 [ 0] adresa directorului de import cu întârziere
0 [ 0] adresa directorului antet COR20
0 [ 0] adresa directorului rezervat

ANTETUL SECȚIUNII #1
.nume text
C44C1 dimensiune virtuală
1000 de adrese virtuale
Dimensiunea C4600 a datelor brute
800 file pointer către date brute

0 număr de relocari
0 număr de numere de linie
60000020 steaguri
Cod
(nu a fost specificat nicio aliniere)
Executați Citire

Directoare de depanare(2)
Tastați Dimensiune Adresă Pointer
cv 25 c549c c4c9c Format: RSDS, guid, 2, kernel32.pdb
(10) 4 c5498 c4c98

ANTETUL SECȚIUNII #2
.nume date
Dimensiunea virtuală FEC
adresa virtuală C6000
Dimensiunea E00 a datelor brute
C4E00 indicator de fișier către date brute
0 indicator de fișier către tabelul de relocare
0 indicator de fișier către numerele de rând
0 număr de relocari
0 număr de numere de linie
C0000040 steaguri
date initializate
(nu a fost specificat nicio aliniere)
Citeste, scrie

ANTETUL SECȚIUNII #3
.rsrc nume
520 dimensiune virtuală
adresa virtuală C7000
600 de dimensiune a datelor brute
C5C00 indicator de fișier către date brute
0 indicator de fișier către tabelul de relocare
0 indicator de fișier către numerele de rând
0 număr de relocari
0 număr de numere de linie
40000040 steaguri
date initializate
(nu a fost specificat nicio aliniere)
Numai citire

ANTETUL SECȚIUNII #4
.relocname
B098 dimensiune virtuală
adresa virtuală C8000
Dimensiunea B200 a datelor brute
Pointer pentru fișierul C6200 către date brute
0 indicator de fișier către tabelul de relocare
0 indicator de fișier către numerele de rând
0 număr de relocari
0 număr de numere de linie
42000040 steaguri
date initializate
Aruncabil
(nu a fost specificat nicio aliniere)
Numai citire

Mesaje și excepții

După atașarea la un proces, este afișată mai întâi o listă de module, apoi pot apărea alte mesaje. De exemplu, când ne conectam la calc.exe, WinDBG setează automat un punct de întrerupere (care este doar un marker folosit pentru a opri aplicația). Informațiile despre punctul de întrerupere sunt afișate pe ecran:

(da8.b44): excepția instrucțiunii de întrerupere - cod 80000003 (prima șansă)

Acest mesaj special este o excepție, și anume excepția primei șanse. În esență, o excepție este o condiție specială care apare în timpul execuției unui program. Excepția de prima șansă înseamnă că programul s-a oprit imediat după ce a apărut excepția. Excepția a doua șansă înseamnă că, după ce apare excepția, vor fi efectuate unele operațiuni, iar apoi programul își va opri funcționarea.

Registrele

După afișarea mesajelor și excepțiilor, depanatorul emite starea registrelor procesorului. Registrele sunt variabile speciale din procesor care stochează mici informații sau țin evidența stării ceva în memorie. Procesorul poate procesa foarte rapid informațiile din aceste registre. Acest lucru este mult mai rapid decât obținerea informațiilor pe autobuz din RAM de fiecare dată.

După conectarea la calc.exe, WinDBG afișează automat informații despre următoarele registre:

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

Mai târziu, puteți duplica din nou aceste informații folosind comanda 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

Dacă dorim să obținem valoarea unui anumit registru, putem executa următoarea comandă:

0:005> r eax
eax=7ffd9000

Informațiile pot fi obținute simultan din mai multe registre, după cum urmează:

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

Indicator către instrucțiuni

Ultima comandă este despre rularea instrucțiunilor. Aici sunt afișate și informații, ca și în cazul comenzii r, despre ceea ce conține registrul EIP. EIP este un registru care conține locația următoarei instrucțiuni care urmează să fie executată de procesor. Ceea ce afișează WinDBG este echivalentul comenzii u eip L1, după ce a executat care WinDBG merge la adresa specificată în registrul EIP, convertește această secțiune în cod de asamblare și o afișează pe ecran.

ntdll!DbgBreakPoint:
77663540 cc int 3

ține legătura

În următoarele articole, ne vom uita la modul de utilizare a WinDBG în luptă: puncte de întrerupere, depanare în pas și vizualizare a memoriei. Nu comuta! J.

Pentru a identifica cauzele ecranelor albastre (BSOD), este necesară analizarea depozitului de memorie. În marea majoritate a cazurilor, este suficient un minidump, care este creat de sistem în cazul unor erori critice.
Acest articol oferă instrucțiuni pas cu pas pentru instalarea și configurarea WinDBG, un instrument puternic de depanare care vă permite să identificați adevărata cauză a unui BSOD.

Pasul 1 — Configurarea înregistrării de descărcare a memoriei mici

Pasul 2 — Instalarea WinDBG

Pentru a analiza depozitele de memorie, va trebui să instalați depanatorul WinDBG, care este inclus cu SDK-ul Windows. La momentul scrierii, cele mai recente versiuni disponibile ale Windows SDK sunt:

  • Windows 10 SDK (descărcați programul de instalare online)
  • Windows 8.1 SDK (descărcați programul de instalare online)

Pasul 3 — Maparea fișierelor .dmp la WinDBG

Hartați fișierele dvs. .dmp la WinDBG pentru a facilita citirea și analizarea depozitelor de memorie. Acest lucru vă va permite să deschideți fișierele dump din Explorer direct în WinDBG, ocolind lansarea preliminară.


Pasul 4 — Configurarea serverului de simboluri pentru a primi fișiere de simboluri de depanare


Instalarea și configurarea inițială a WinDBG sunt acum finalizate. Pentru a-i schimba aspectul, puteți merge la meniu vedere- setările fontului pe care le veți găsi selectând elementul Font, și setările ferestrei consolei în Opțiuni.

Pentru a identifica cauzele ecranelor albastre (BSOD), este necesară analizarea depozitului de memorie. În marea majoritate a cazurilor, este suficient un minidump, care este creat de sistem în cazul unor erori critice.
Acest articol oferă instrucțiuni pas cu pas pentru instalarea și configurarea WinDBG, un instrument puternic de depanare care vă permite să identificați adevărata cauză a unui BSOD.

Pasul 1 — Configurarea înregistrării de descărcare a memoriei mici

Pasul 2 — Instalarea WinDBG

Pentru a analiza depozitele de memorie, va trebui să instalați depanatorul WinDBG, care este inclus cu SDK-ul Windows. La momentul scrierii, cele mai recente versiuni disponibile ale Windows SDK sunt:

  • Windows 10 SDK (descărcați programul de instalare online)
  • Windows 8.1 SDK (descărcați programul de instalare online)

Pasul 3 — Maparea fișierelor .dmp la WinDBG

Hartați fișierele dvs. .dmp la WinDBG pentru a facilita citirea și analizarea depozitelor de memorie. Acest lucru vă va permite să deschideți fișierele dump din Explorer direct în WinDBG, ocolind lansarea preliminară.


Pasul 4 — Configurarea serverului de simboluri pentru a primi fișiere de simboluri de depanare


Instalarea și configurarea inițială a WinDBG sunt acum finalizate. Pentru a-i schimba aspectul, puteți merge la meniu vedere- setările fontului pe care le veți găsi selectând elementul Font, și setările ferestrei consolei în Opțiuni.

Instrumente de depanare pentru Windows- Instrumente pentru depanarea codului sistemelor de operare Windows. Sunt un set de programe distribuite gratuit de la Microsoft concepute pentru depanarea codului în modul utilizator și în modul kernel: aplicații, drivere, servicii, module kernel. Setul de instrumente include depanare console și GUI, utilitare pentru lucrul cu simboluri, fișiere, procese, utilitare pentru depanare la distanță. Setul de instrumente conține utilitare cu care puteți găsi cauzele defecțiunilor în diferite componente ale sistemului. Instrumente de depanare pentru Windows dintr-un anumit moment nu sunt disponibile pentru descărcare sub forma unei distribuții autonome și fac parte din Windows SDK (Windows Software Development Kit). Windows SDK, la rândul său, este disponibil ca parte a programului de abonament MSDN sau poate fi descărcat gratuit ca distribuție separată de pe msdn.microsoft.com. Potrivit dezvoltatorilor, cea mai recentă și cea mai actualizată versiune a Instrumentelor de depanare pentru Windows este conținută în SDK-ul Windows.

Instrumentele de depanare pentru Windows sunt actualizate și puse la dispoziția publicului destul de des, iar acest proces nu depinde de lansarea sistemelor de operare. Prin urmare, verificați periodic dacă există versiuni noi.

Să vedem acum ce ne permit, în special, instrumentele de depanare pentru Microsoft Windows:

  • Depanarea aplicațiilor locale, a serviciilor (serviciilor), a driverelor și a nucleului;
  • Depanați aplicațiile de la distanță, serviciile (serviciile), driverele și nucleul prin rețea;
  • Depanați aplicațiile care rulează în timp real;
  • Analizați fișierele de descărcare a memoriei aplicațiilor, nucleului și sistemului în ansamblu;
  • Lucrați cu sisteme bazate pe arhitecturi x86/x64/Itanium;
  • Depanați programele în modul utilizator și în modul kernel;

Sunt disponibile următoarele versiuni de Instrumente de depanare pentru Windows: x86 pe 32 de biți, Intel Itanium, x64 pe 64 de biți. Avem nevoie de două dintre ele: x86 sau x64.

Există mai multe moduri de a instala Instrumentele de depanare pentru Windows, în acest articol le vom lua în considerare doar pe cele principale:

  • Instalare prin program de instalare web.
  • Instalarea instrumentelor de depanare pentru Windows din Windows SDK ISO.
  • Instalarea instrumentelor de depanare pentru Windows direct din pachetele dbg_amd64.msi /dbg_x86.msi.

Rămâne neclar în ce moment, de ce ar trebui să instalez instrumente de depanare pe un computer? De multe ori, până la urmă, dai peste o situație în care intervenția în mediul de lucru este extrem de nedorită! Și cu atât mai mult cu cât instalarea unui produs nou, adică efectuarea de modificări la fișierele de registru/sistem, poate fi complet inacceptabilă. Serverele critice pentru misiune sunt exemple. De ce nu iau în considerare dezvoltatorii versiuni portabile ale aplicațiilor care nu necesită instalare?
De la versiune la versiune, procesul de instalare a pachetului Instrumente de depanare pentru Windows suferă unele modificări. Să trecem acum direct în procesul de instalare și să vedem modurile în care setul de instrumente poate fi instalat.

Instalarea instrumentelor de depanare pentru Windows utilizând programul de instalare web

Accesați pagina Windows SDK Archive și găsiți o secțiune numită Windows 10 și sub articolul „Windows 10 SDK (10586) and Microsoft Windows 10 Mobile Device Emulator (versiunea 10586.11)”.

Faceți clic pe un articol INSTALARE SDK. După ce faceți clic, descărcați și rulați fișierul sdksetup.exe, care inițiază procesul de instalare online a SDK-ului Windows. În etapa inițială, instalatorul va verifica dacă cea mai recentă versiune a pachetului .NET Framework este instalată pe sistem (în prezent este 4.5). Dacă pachetul lipsește, instalarea va fi oferită și stația va fi repornită la terminare. Imediat după repornire, în etapa de autorizare a utilizatorului, procesul de instalare începe direct cu Windows SDK.

Adesea, atunci când alegeți toate componentele pachetului fără excepție, pot apărea erori în timpul procesului de instalare. În acest caz, se recomandă instalarea selectivă a componentelor, setul minim necesar.

După finalizarea instalării Instrumentelor de depanare pentru Windows, locația fișierelor de depanare cu această metodă de instalare va fi următoarea:

  • Versiuni pe 64 de biți: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x64
  • Versiuni pe 32 de biți: C:\Program Files (x86)\Windows Kits\x.x\Debuggers\x86

* unde x.x este o versiune specifică a kitului de dezvoltare;
Ați observat că versiunile 8 și mai mari, căile de instalare sunt vizibil diferite de cele clasice pentru toate versiunile anterioare ale instrumentelor de depanare?

Un avantaj uriaș al acestei metode de instalare a Instrumentelor de depanare pentru Windows este instalarea de versiuni de instrumente de depanare pentru toate arhitecturile simultan.

Instalarea instrumentelor de depanare pentru Windows din Windows SDK ISO

Această metodă implică instalarea Instrumentelor de depanare pentru Windows folosind imaginea completă de instalare Windows SDK (Software Developers Kit). Până la un anumit moment, puteți descărca imaginea ISO pentru sistemul corespunzător de pe pagina Windows SDK Archive. Cu toate acestea, în acest moment, puteți obține o imagine ISO a SDK-ului rulând programul de instalare web sdksetup.exe și selectând elementul Descărcați kitul de dezvoltare software Windowsîn fereastra de pornire a programului de instalare:

După cum s-a descoperit, metoda anterioară de instalare folosind programul de instalare web este destul de capricioasă și adesea eșuează. Pe sistemele curate se instalează fără probleme, dar pe sistemele suficient de încărcate apar numeroase probleme. Dacă acesta este cazul pentru tine, atunci folosește această metodă.

În consecință, pe pagină trebuie să selectați kitul de distribuție necesar, pentru mine (și cred că pentru mulți) momentan este „Windows SDK pentru Windows 7 și .NET Framework 4” și un pic mai jos faceți clic pe linkul „Obțineți Imagine ISO DVD” .

Când lucrați cu site-ul msdn.microsoft.com, vă sfătuiesc să utilizați browserul Internet Explorer, deoarece s-au observat cazuri de inoperabilitate a produselor concurente!

În consecință, este necesar să alegeți numai dacă este necesar. De obicei, bitness-ul Instrumentelor de depanare pentru Windows este același cu bitness-ul sistemului. Sistemele mele de testare sunt în mare parte pe 64 de biți, așa că în cele mai multe cazuri descarc imaginea pentru sistemul pe 64 de biți GRMSDKX_EN_DVD.iso .
Apoi, după descărcarea imaginii, trebuie să lucrăm cumva cu imaginea ISO existentă. Modul tradițional este, desigur, arderea unui CD, dar aceasta este o metodă destul de lungă și uneori costisitoare. Vă sugerez să folosiți utilități gratuite pentru a crea dispozitive de disc virtual în sistem. Personal, prefer să folosesc programul DEAMON Tools Lite în acest scop. Cineva poate avea alte preferințe, utilitare mai directe sau mai ușoare, în gust și culoare, după cum se spune.. După instalarea DAEMON Tools Lite, pur și simplu dau dublu clic pe fișierul imagine GRMSDKX_EN_DVD.iso și am un nou CD virtual:

Apoi, făcând dublu clic, activez încărcarea automată și pornesc instalarea SDK-ului Windows:

Când vine rândul să selectăm componentele de instalat din listă, dezactivăm absolut toate opțiunile, cu excepția celor marcate în captură de ecran. Acest lucru ne va ajuta să evităm acum greșelile inutile.


Așa este, captura de ecran arată două opțiuni: „Windows Performance Toolkit” și „Debugging Tools for Windows”. Alegeți ambele, deoarece setul de instrumente de performanță Windows vă va fi cu siguranță util în munca dvs.! În plus, după ce faceți clic pe butonul „Următorul”, instalarea continuă în modul normal. Și la sfârșit veți vedea inscripția „Instalare finalizată”.
La finalizarea instalării, directoarele de lucru ale kit-ului Instrumente de depanare pentru Windows vor fi după cum urmează:

  • Pentru versiunea x86:
  • Pentru versiunea x64:

Aceasta completează instalarea Instrumentelor de depanare pentru Windows.

Instalarea instrumentelor de depanare pentru Windows prin fișierul .msi

În cazul unor probleme în timpul instalării Instrumentelor de depanare pentru Windows în cele două moduri anterioare, mai avem încă una, cea mai fiabilă și mai testată în timp, care ne-a ajutat, ca să spunem așa, de mai multe ori. Odată, înainte de integrarea în Windows SDK, Instrumentele de depanare pentru Windows erau disponibile ca un program de instalare .msi separat, care poate fi încă găsit, dar deja în măruntaiele distribuției Windows SDK. Deoarece avem deja o imagine ISO a SDK-ului Windows la îndemână, nu o putem monta în sistem, ci pur și simplu o putem deschide folosind binecunoscutul arhivator WinRAR sau orice alt produs care funcționează cu conținutul discurilor ISO.

După deschiderea imaginii, trebuie să mergem la directorul „Setup” situat la rădăcină și apoi să selectăm unul dintre directoare:

  • Pentru a instala versiunea pe 64 de biți: \Setup\WinSDKDebuggingTools_amd64și despachetați fișierul dbg_amd64.msi din acest director.
  • Pentru a instala versiunea pe 32 de biți: \Setup\WinSDKDebuggingTools și despachetați fișierul dbg_x86.msi din acest director.

La finalizarea instalării, directoarele de lucru ale kit-ului Instrumente de depanare pentru Windows vor fi după cum urmează:

  • Pentru versiunea x86: C:\Program Files (x86)\Debugging Tools pentru Windows (x86)
  • Pentru versiunea x64: C:\Program Files\Debugging Tools pentru Windows (x64)

În acest moment, instalarea Instrumentelor de depanare pentru Windows poate fi considerată finalizată.

informatii suplimentare

Nu știu cu ce este conectat, poate cu neatenția mea, dar după instalarea Instrumentelor de depanare pentru Windows, programul de instalare nu setează calea către directorul cu depanatorul în variabila cale de sistem Path. Acest lucru impune anumite restricții privind rularea diferitelor sarcini de depanare direct din consolă. Prin urmare, în lipsa unei căi, eu însumi scriu în fereastră variabile de mediu calea către instrumentele de depanare:

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

* În cazul dvs., căile pot diferi atât din cauza utilizării unui sistem de operare cu un bit diferit, cât și din cauza utilizării unui SDK cu o versiune diferită.

Utilitățile pachetului Instrumente de depanare pentru Windows pot funcționa ca aplicații portabile, trebuie doar să copiați directorul din sistemul de lucru Kit de instrumente de performanță Microsoft Windowsși folosiți-l ca versiune portabilă pe un server de producție. Dar nu uitați să țineți cont de capacitatea sistemului !! Chiar dacă ați făcut o instalare completă a pachetului pe un sistem critic, atunci puteți începe să lucrați imediat după instalare, nu este necesară repornirea.

Instrumente de depanare pentru Windows

Și acum, în sfârșit, iată compoziția Instrumentelor de depanare pentru Windows:

Fişier Scop
adplus.doc Documentație pentru utilitarul ADPlus.
adplus.exe O aplicație de consolă care automatizează munca depanatorului cdb pentru a crea depozite, fișiere jurnal pentru unul sau mai multe procese.
agestore.exe Un utilitar pentru eliminarea fișierelor învechite din stocarea utilizată de serverul de simbol sau de serverul sursă.
breakin.exe Un utilitar care vă permite să trimiteți o combinație personalizată de pauză către procese, similar cu apăsarea CTRL+C.
cdb.exe Depanator consolă în modul utilizator.
convertstore.exe Utilitar pentru a converti personajele de la 2 niveluri la 3 niveluri.
dbengprx.exe Ripiter (server proxy) pentru depanare la distanță.
dbgpc.exe Un utilitar pentru afișarea informațiilor despre starea unui apel RPC.
dbgsrv.exe Procesul server utilizat pentru depanarea de la distanță.
dbh.exe Un utilitar pentru afișarea informațiilor despre conținutul unui fișier simbol.
dumpchk.exe Utilitar de verificare a depozitului. Un utilitar pentru verificarea rapidă a unui fișier dump.
dumpexam.exe Un utilitar pentru analiza unui depozit de memorie. Rezultatul este scos la %SystemRoot%\MEMORY.TXT .
gflags.exe Editor de steaguri de sistem global. Utilitarul gestionează cheile de registry și alte setări.
i386kd.exe Wrapper pentru kd. Așa a fost numit odată kd pentru sistemele bazate pe Windows NT/2000 pentru mașinile x86? Probabil a fost lăsat din motive de compatibilitate.
ia64kd.exe Wrapper pentru kd. Așa a fost numit odată kd pentru sistemele bazate pe Windows NT/2000 pentru mașinile ia64? Probabil a fost lăsat din motive de compatibilitate.
kd.exe Depanator de consolă în modul Kernel.
kdbgctrl.exe Instrument de gestionare a depanării kernelului. Utilitar pentru gestionarea și configurarea conexiunii de depanare a nucleului.
kdsrv.exe Server de conexiune pentru KD. Utilitarul este o aplicație mică care rulează și așteaptă conexiuni la distanță. kd rulează pe un client și se conectează la acel server pentru depanare la distanță. Atât serverul, cât și clientul trebuie să fie din același ansamblu Instrumente de depanare.
kill.exe Utilitate pentru terminarea proceselor.
list.exe Un utilitar pentru afișarea conținutului unui fișier pe ecran. Acest utilitar în miniatură a fost inclus cu un singur scop - vizualizarea fișierelor text sau jurnal mari. Ocupă puțin spațiu de memorie, deoarece încarcă textul în părți.
logger.exe Un depanator mic care poate funcționa doar cu un singur proces. Utilitarul injectează logexts.dll în spațiul de proces, care înregistrează toate apelurile de funcții și alte acțiuni ale programului examinat.
logviewer.exe Un utilitar pentru vizualizarea jurnalelor scrise de depanatorul logger.exe.
ntsd.exe Microsoft NT Symbolic Debugger (NTSD). Un depanator care este identic cu cdb, cu excepția faptului că creează o fereastră de text la pornire. La fel ca cdb, ntsd este capabil să depaneze atât aplicațiile de consolă, cât și aplicațiile grafice.
pdbcopy.exe Un utilitar pentru eliminarea simbolurilor private dintr-un fișier simbol, controlând simbolurile publice incluse într-un fișier simbol.
remote.exe Utilitar pentru depanarea de la distanță și controlul de la distanță al oricărui depanator de consolă KD, CDB și NTSD. Vă permite să rulați toate aceste depanatoare de consolă de la distanță.
rtlist.exe Vizualizator de sarcini de la distanță. Utilitarul este folosit pentru a enumera procesele care rulează prin procesul serverului DbgSrv.
symchk.exe Un utilitar pentru a descărca simboluri de pe serverul de simboluri Microsoft și pentru a crea un cache local de simboluri.
symstore.exe Utilitate pentru crearea de rețea sau stocare locală a simbolurilor (2-tier/3-tier). Un depozit de simboluri este un director specializat pe disc care este construit conform unei anumite structuri și conține simboluri. În directorul rădăcină al simbolurilor, se creează o structură de subfolder cu nume identice cu numele componentelor. La rândul său, fiecare dintre aceste subfoldere conține subfoldere imbricate cu nume speciale, obținute prin hashing fișiere binare. Utilitarul symstore scanează folderele de componente și adaugă noi componente la magazinul de simboluri de unde orice client le poate prelua. Se spune că magazinul de simboluri este folosit pentru a obține simboluri din stocarea de nivel 0 și pentru a le pune în stocarea de 2 niveluri/3 niveluri.
tlist.exe Vizualizator de sarcini. Un utilitar pentru listarea tuturor proceselor care rulează.
umdh.exe Utilitar dump heap în modul utilizator. Un utilitar pentru analiza grămezilor unui proces selectat. Vă permite să afișați diferite opțiuni pentru heap.
usbview.exe Vizualizator USB. Utilitar pentru vizualizarea dispozitivelor USB conectate la computer.
vmdemux.exe Demultiplexor de mașină virtuală. Creează mai multe conducte denumite pentru o singură conexiune COM. Canalele sunt folosite pentru a depana diverse componente ale mașinii virtuale
windbg.exe Modul utilizator și modul kernel depanator cu GUI.