DTrace este acum disponibil pe Windows
Următoarea actualizare a caracteristicilor Windows 10 (19H1, Actualizare aprilie 2019, versiunea 1903) va include suport pentru DTrace, popularul instrument open source de depanare și diagnosticare. A fost creat inițial pentru Solaris și a devenit disponibil pentru Linux, FreeBSD, NetBSD și macOS. Microsoft l-a portat pe Windows.
DTrace este un cadru de urmărire dinamic care permite unui administrator sau dezvoltator să obțină o privire în timp real a unui sistem, fie în modul utilizator, fie în modul kernel. DTrace are un limbaj de programare puternic și de nivel înalt în stil C, care vă permite să inserați în mod dinamic puncte de urmărire. Folosind aceste puncte de urmărire inserate dinamic, puteți filtra condițiile sau erorile, puteți scrie cod pentru a analiza modelele de blocare, puteți detecta blocajele etc.
Pe Windows, DTrace extinde Urmărirea evenimentelor pentru Windows (ETW), care este static și nu oferă capacitatea de a insera programatic puncte de urmărire în timpul execuției.
Toate API-urile și funcționalitățile utilizate de dtrace.sys sunt apeluri documentate.
Microsoft a implementat un driver special pentru Windows 10 care permite îndeplinirea unui număr de roluri de monitorizare a sistemului. Driverul va fi inclus cu Windows 10 versiunea 1903. De asemenea, DTrace necesită în prezent să pornească Windows cu un depanator de nucleu activat.
Codul sursă pentru instrumentul portat DTrace este disponibil pe GitHub. Vizitează pagina „DTrace pe Windows” în cadrul proiectului OpenDTrace de pe GitHub pentru a-l vedea.
Configurați DTrace în Windows 10
Condiții preliminare pentru utilizarea funcției
- Insider Windows 10 construi 18342 sau mai sus
- Disponibil doar pe x64 Windows și captează informații de urmărire numai pentru procesele pe 64 de biți
-
Programul Windows Insider este activat și configurat cu un cont Windows Insider valid.
- Accesați Setări->Actualizare și securitate->Program Windows Insider pentru detalii
Instrucțiuni:
-
Set de configurare BCD:
- bcdedit /set dtrace on
- Rețineți, trebuie să setați din nou opțiunea bcdedit, dacă faceți upgrade la o nouă versiune Insider
-
Descarca și instalați pachetul DTrace din centru de descărcare.
- Aceasta instalează componentele modului utilizator, driverele și pachetele de caracteristici suplimentare la cerere necesare pentru ca DTrace să fie funcțional.
- Opțional: actualizați Variabila de mediu PATH a include C:\Program Files\DTrace
- setați PATH=%PATH%;"C:\Program Files\DTrace"
- Înființat calea simbolului
- Creați un director nou pentru stocarea locală a simbolurilor în cache. Exemplu: mkdir c:\symbols
- A stabilit _NT_SYMBOL_PATH=srv*C:\simboluri*http://msdl.microsoft.com/download/symbols
- DTrace descarcă automat simbolurile necesare de pe serverul de simboluri și memorează cache în calea locală.
-
Opțional:Configurați depanatorul Kernel conexiune la mașina țintă (link MSDN). Aceasta este numai necesar dacă doriți să urmăriți evenimentele Kernel folosind FBT sau alți furnizori.
- Rețineți că va trebui să dezactivați Secureboot și Bitlocker pe C:, (dacă sunt activate), dacă doriți să configurați un depanator de kernel.
- Reporniți mașină țintă
Folosind DTrace
- Deschide o prompt de comandă ridicat.
- Executați una dintre următoarele comenzi:
# Rezumat Syscall după program timp de 5 secunde: dtrace -Fn "tick-5sec { ieșire (0);} syscallentry{ @num[pid, execname] = count();} " # Rezumați cronometrul setat/anulați programul pentru 3 secunde: dtrace -Fn "tick-3sec { exit (0);} syscall:: Nt*Timer*:entry { @[probefunc, execname, pid] = count();}" # Dump System Process kernel structure: (necesită calea simbolului către fi setat) dtrace -n "BEGIN{print(*(struct nt`_EPROCESS *) nt`PsInitialSystemProcess);exit (0);}" # Urmărirea căilor prin NTFS la rularea notepad.exe (necesită KD a
Comanda dtrace -lvn syscall va lista toate sondele și parametrii acestora disponibili de la furnizorul de apeluri syscall.
Următoarele sunt câțiva dintre furnizorii disponibili pe Windows și ce instrumentează aceștia.
- syscall – Apeluri de sistem NTOS
- fbt (Function Boundary Tracing) – Intrarea și returnările funcției kernel
- pid – Urmărirea procesului în modul utilizator. La fel ca FBT în mod kernel, dar care permite și instrumentarea decalajelor de funcții arbitrare.
-
etw (Urmărirea evenimentelor pentru Windows) – Permite definirea de sonde pentru ETW. Acest furnizor ajută la valorificarea instrumentelor existente ale sistemului de operare în DTrace.
- Aceasta este o adăugare pe care am făcut-o DTrace pentru a-i permite să expună și să obțină toate informațiile pe care Windows le oferă deja ETW.
Mai multe exemple de scripturi aplicabile pentru scenariile Windows pot fi găsite în aceasta directorul de mostre.
Sursă: Microsoft