DTrace pe Windows primește actualizările sale 20H1 cu suport ARM64
DTrace este 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 și îi adaugă o parte din actualizări cu actualizarea caracteristicii 20H1.
Publicitate
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 este construit în Windows 10 începând cu versiunea 1903.
Începând cu Windows 10 insider build 19041.21, DTrace vine cu următoarele îmbunătățiri.
Previzualizare ARM64
Da, așa e! DTrace acceptă acum ARM64 în modul de previzualizare. ARM64 MSI este disponibil în linkul de descărcare de mai sus.
Îl puteți folosi pe dvs Surface Pro X rulează cea mai recentă versiune Windows 10 Insider Preview (20H1), începând cu 19041.21.
DTrace pe Surface Pro X
Modul utilizator Stackwalk
În previzualizare, facilitatea stackwalk din DTrace a fost limitată la modul Kernel (stivă). Această actualizare adaugă suport pentru facilitatea stackwalk în modul utilizator (ustack). La fel ca stack, facilitatea ustack este pe deplin compatibilă cu specificația DTrace open source. Poate fi invocat în trei moduri prin specificarea cadrelor (adâncimea) și dimensiunea (ignorate pentru moment) sau nul.
- Ustack (nframes, dimensiune)
- Ustack (nframes)
- Ustack()
În timp ce ustack () poate determina adresa cadrului de apel atunci când sonda se declanșează, cadrele de stivă o vor face nu va fi tradus în simboluri până când acțiunea ustack () nu este procesată în modul utilizator de către consumatorul DTrace. Descărcarea simbolurilor poate încetini producția. Prin urmare, este mai bine să utilizați această facilitate cu simboluri stocate în cache local, ca mai jos.
dtrace -n "profil-1ms /arg1/ {ustack (50, 0); ieșire (0);} " -y C:\simboluri. dtrace: descrierea „profile-1ms” s-a potrivit cu 1 sondă. FUNCȚIA ID CPU: NUME 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0x44
Suport pentru descărcarea live
Windows folosește de obicei ceva numit Grozav viu pentru a ajuta la diagnosticarea rapidă a problemelor. Dumpurile în timp real ajută la depanarea problemelor care implică mai multe procese sau probleme la nivel de sistem fără timpi de nefuncționare. În 20H1, DTrace pe Windows poate fi folosit pentru a captura o descărcare în direct din interiorul unui D-script folosind lkd() Facilitatea DTrace. Un caz de utilizare obișnuit al acestei facilități este de a instrumenta calea erorii (cum codul de returnare indică o defecțiune) și de a captura o descărcare directă în punctul de defecțiune pentru diagnosticare avansată. Pentru mai multe informații despre suportul pentru descărcarea live, consultați DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Declanșează descărcarea live \n \");ieșire (0); }}" dtrace: descrierea 'syscallreturn ' s-a potrivit cu 1411 sonde. dtrace: permiterea acțiunilor distructive. ID CPU FUNCȚIE: NUME 0 181 NtDeviceIoControlFile: return Triggering Live dump dir c:\Windows\LiveKernelReports Volumul din unitatea C nu are etichetă. Numărul de serie al volumului este 70F4-B9F6 Directorul c:\Windows\LiveKernelReports 05.11.2019 17:20<DIR>. 05.11.2019 17:20 <DIR>.. 05.11.2019 17:19 <DIR> DTRACE. 05.11.2019 17:20 53.395.456 DTRACE-20191105-1720.dmp.
Urmărirea ETW
Urmărirea ETW este instrumentul cel mai frecvent utilizat pentru depanare pe Windows. În previzualizarea DTrace pe Windows 19H1, am adăugat suport pentru instrumentarea evenimentelor înregistrate și manifestate folosind Furnizor ETW.
În 20H1, am îmbunătățit și mai mult această facilitate pentru a crea noi evenimente ETW din mers din interiorul unui D-script folosind ETW_Trace() facilitate. Acest lucru ajută în situațiile în care evenimentele ETW existente sunt insuficiente și doriți să adăugați puncte de urmărire ETW suplimentare fără a modifica codul de producție.
Pentru mai multe informații despre ETW_Trace facilitate și furnizor ETW, vedea DTrace ETW.
/* Rularea eșantionului de furnizor GitHub ETW (link de mai jos) pentru a imprima evenimentul de informații despre memoria nodului. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d ID partiție: 0. Număr: 1. Numărul nodului: 1. m_nodeinfo { uint64_t TotalPageCount = 0x1fb558 uint64_t SmallFreePageCount = 0x41 uint64_t SmallZeroPageCount = 0 uint64_t MediumFreePageCount = 0 uint64_t MediumZeroPageCount = 0 uint64_t LargeFreePageCount = 0 uint64_t LargeZeroPageCount = 0 uint64_t HugeFreePageCount = 0 uint64_t HugeZeroPageCount = 0. }
Dacă sunteți interesat să instalați DTrace, verificați cum se poate face Aici.
Puteți descărca pachetul DTrace MSI actualizat de aici.
Aici este cod sursa și scripturi avansate.
Sursă