În Debugging Tools pentru pachetul Windows include instrumente avansate de depanare pe care le puteți utiliza pentru a explora structura internă a Windows. Cea mai recentă versiune este inclusă ca parte a unui set de dezvoltare software - pentru Windows Software Development Kit (SDK).
Fondurile din acest set poate fi utilizat pentru depanarea ca procesele de modul de utilizare și procesele de nucleu.
NOTĂ. Instrumente depanând pentru instrumente de depanare pentru Windows sunt adesea actualizate și disponibile, indiferent de versiune a sistemului de operare Windows, deci reveniți adesea pentru noi versiuni.
TIP. Debugging în modul de utilizare.
Instrumentele de depanare pot fi, de asemenea, utilizat pentru conectarea la procesul de user-mode și de a explora și (sau) schimba starea de memorie a procesului. Când este conectat la proces există două opțiuni:
- Compulsive (invazive). Dacă vă conectați la un proces de funcționare nu este dat instrucțiuni speciale pentru a conecta debugger la codul fiind depanate folosind DebugActiveProcess Windows funcție. Astfel, crearea condițiilor pentru cercetare și (sau) schimbări în procesul de memorie, set breakpoints și efectua alte caracteristici de depanare. Pentru Windows vă permite să opriți depanarea fără a întrerupe procesul de țintă, dacă depanatorul este dezactivat fără a întrerupe activitatea lor.
- Discret (neinvazivă). În cadrul acestei opțiuni, debugger se deschide un proces utilizând funcția OpenProcess. Acest proces nu este conectat la un alt proces ca un depanator. Acesta vă permite să explorați și (sau) pentru a modifica memoria de proces țintă, dar nu se poate seta puncte de întrerupere.
Cu instrumente de depanare, puteți deschide, de asemenea, un fișier de imagine a modului de utilizare.
o fereastră de linie de comandă (Kd.exe) și având, GUI grafică interfața cu utilizatorul (Windbg.exe): două depanator poate fi folosit pentru a depana kernel-ul. Ambele depanator oferă același set de instrucțiuni, astfel încât alegerea depinde în întregime de preferințele personale. Aceste instrumente vă permit să efectuați trei tipuri de depanare nucleu:
- fișier de imagine Deschideți accident creat ca urmare a unui accident de sistem.
- Conectarea la sistemul de operare existent și de a explora starea sistemului (sau pentru a seta puncte de întrerupere atunci când depana codul de driver de dispozitiv cod). Pentru această operație, avem nevoie de două computere - țintă și gazdă. Calculatorul-țintă conține depanat sistemului, și să conducă - sistemul pe care este pornit debugger. Sistemul țintă poate fi conectat la gazdă printr-un cablu de modem nul, cablu IEEE 1394 sau un cablu de depanare USB 2.0. Sistemul țintă trebuie să fie pornit în modul de depanare (sau prin apăsarea F8 în timpul procesului de pornire și selectați modul Debug (Debugging Mode), sau prin setările de sistem pentru a rula în modul de depanare, folosind Bcdedit sau Msconfig.exe). Este de asemenea posibil să se conecteze printr-un canal numit utilizat atunci când depanare prin intermediul mașinii virtuale (create prin mijloace, cum ar fi Hyper-V, Virtual PC sau VMWare), prin care prezintă sistemul de operare musafir port serial ca dispozitiv de canal subtitrat.
- sistemele Windows se pot conecta la sistemul local și pentru a investiga starea sa. Aceasta se numește „depanarea kernel locale.“ Pentru a porni un nucleu de depanare local, folosind WinDbg depanator, deschideți meniul File (Fișier), faceți clic pe Kernel Debug (Kernel Debugging), faceți clic pe fila Local (Local), apoi faceți clic pe OK. Sistemul țintă trebuie să fie încărcate în modul de depanare. EXEMPLU apare când acest ecran este prezentat în Fig. 1.6. Modul de depanare nucleu local nu funcționează, unele comanda depanator nucleu (de exemplu, comanda .dump pentru a crea o imagine de memorie, cu toate că o astfel de depozit pot fi create folosind raportarea înseamnă LiveKd în continuare).
Pentru a afișa conținutul structurii interne a datelor, care include informații despre fire, procese, pachete de solicitări de introducere a datelor și de ieșire, precum și informații despre managementul memoriei, după conectarea la depanarea kernel-mode, puteți utiliza unul dintre cele mai multe extensii comenzi depanator (comenzi care încep cu „!“ Simbol ).
Excelent material de referință de utilitate poate servi fișier Debugger.chm conținute în dosarul de instalare, WinDbg depanator. Acesta oferă documentație pentru toate funcțiile și îmbunătățiri în depanatorul kernel. În plus față de acest dt echipa (tipul de afișare - tipul de afișare) poate fi formatat mai mult de 1.000 de structuri de nucleu deoarece fișierele simbolul nucleu pentru Windows furnizează informații despre tipurile care depanatorul pot fi folosite pentru structuri de format.
Experiment: Afișează informații despre tipurile de structuri de nucleu.
Pentru a afișa o listă a structurilor de nucleu ale căror informații de tip este inclus în caractere de bază, tipul în depanatorul kernel comandă dt nt! _ *. Retragerea parțială a eșantionului este următoarea:
echipajului Dt poate utiliza, de asemenea, pentru a căuta structuri specifice, inerente folosind această posibilitate comandă de caractere surogat. De exemplu, dacă sunteți în căutarea numelui structurii întrerupe obiect, trebuie să tastați NT comandă dt * _ * întrerupe !:
LKD> dt nt! _ * întrerupe *
Apoi, așa cum se arată în exemplul următor, putem folosi o comandă pentru formatarea dt structura special:
LKD> dt nt! _kinterrupt
+0x000 Tip. Int2B
+Dimensiune 0x002. Int2B
+0x008 InterruptListEntry. _LIST_ENTRY
+0x018 ServiceRoutine. Ptr64 unsigned char
+0x020 MessageServiceRoutine. Ptr64 unsigned char
+0x028 MessageIndex. Uint4B
+0x030 ServiceContext. Ptr64 Void
+0x038 SpinLock. Uint8B
+0x040 TickCount. Uint4B
+0x048 ActualLock. Ptr64 Uint8B
+0x050 DispatchAddress. Ptr64 void
+0x058 Vector. Uint4B
+0x05c IRQL. UChar
+0x05d SynchronizeIrql. UChar
+0x05e FloatingSave. UChar
+0x05f Connected. UChar
+Numărul 0x060. Uint4B
+0x064 ShareVector. UChar
+0x065 Pad. [3] Char
+Modul 0x068. _KINTERRUPT_MODE
+0x06c Polaritate. _KINTERRUPT_POLARITY
+0x070 ServiceCount. Uint4B
+0x074 DispatchCount. Uint4B
+0x078 RSVD1. Uint8B
+0x080 TrapFrame. Ptr64 _KTRAP_FRAME
+0x088 rezervate. Ptr64 Void
+0x090 DispatchCode. [4] Uint4B
Trebuie remarcat faptul că infrastructura de comandă dt (structuri din cadrul structurilor) nu sunt afișate în mod prestabilit. Pentru a efectua substructuri recursive nevoie pentru a utiliza tasta -r. De exemplu, folosiți această tastă pentru a întrerupe ieșire _LIST_ENTRY obiect nucleu care prezintă structura de format stocat în InterruptListEntry câmp:
LKD> dt nt! _kinterrupt -r
+0x000 Tip. Int2B
+Dimensiune 0x002. Int2B
+0x008 InterruptListEntry. _LIST_ENTRY
+0x000 Flink. Ptr64 _LIST_ENTRY
+0x000 Flink. Ptr64 _LIST_ENTRY
+0x008 clipire. Ptr64 _LIST_ENTRY
+0x008 clipire. Ptr64 _LIST_ENTRY
+0x000 Flink. Ptr64 _LIST_ENTRY
+0x008 clipire. Ptr64 _LIST_ENTRY
Fișierul de ajutor pentru instrumente de depanare pentru Windows și explică modul de configurare și de a folosi debugger nucleu. Detalii suplimentare despre utilizarea depanatorul kernel, conceput special pentru șofer creatorii de dispozitiv, pot fi găsite în documentația pentru setul de driver Kit pentru Windows.