DTrace på Windows modtager sine 20H1-opdateringer med ARM64-understøttelse
DTrace er det populære open source-fejlfindings- og diagnoseværktøj. Den er oprindeligt bygget til Solaris og blev tilgængelig til Linux, FreeBSD, NetBSD og macOS. Microsoft har overført det til Windows og tilføjer en del opdateringer til det med 20H1-funktionsopdatering.
DTrace er en dynamisk sporingsramme, der giver en administrator eller udvikler mulighed for at få et realtidskig ind i et system enten i bruger- eller kernetilstand. DTrace har et C-stil højt niveau og kraftfuldt programmeringssprog, der giver dig mulighed for dynamisk at indsætte sporingspunkter. Ved at bruge disse dynamisk indsatte sporingspunkter kan du filtrere på forhold eller fejl, skrive kode for at analysere låsemønstre, detektere blokeringer osv.
På Windows udvider DTrace Event Tracing for Windows (ETW), som er statisk og ikke giver mulighed for programmæssigt at indsætte sporingspunkter under kørsel.
Alle API'er og funktionalitet, der bruges af dtrace.sys, er dokumenterede kald.
Microsoft har implementeret en speciel driver til Windows 10, der gør det muligt at udføre en række systemovervågningsroller. Driveren er bygget i Windows 10 fra version 1903.
Starter i Windows 10 insider build 19041.21, DTrace kommer med følgende forbedringer.
ARM64 forhåndsvisning
Ja det er rigtigt! DTrace understøtter nu ARM64 i preview-tilstand. ARM64 MSI er tilgængelig i downloadlinket ovenfor.
Du kan bruge det på din Surface Pro X kører den seneste Windows 10 Insider Preview (20H1) build, startende med 19041.21.
Brugertilstand Stackwalk
I forhåndsvisningen var stackwalk-faciliteten i DTrace begrænset til Kernel-tilstand (stack). Denne opdatering tilføjer support til brugertilstand stackwalk-facilitet (ustack). Ligesom stack er ustack-faciliteten fuldt ud kompatibel med open source DTrace-specifikation. Det kan påberåbes på tre måder ved at specificere rammer (dybde) og størrelse (ignoreres indtil videre) eller ugyldigt.
- Ustack (nframes, størrelse)
- Ustack (nframes)
- Ustack()
Mens ustack () kan bestemme adressen på den kaldende ramme, når sonden udløses, vil stackrammerne ikke oversættes til symboler, før ustack-handlingen () behandles i brugertilstand af DTrace-forbrugeren. Symboldownload kan sænke outputtet. Derfor er det bedre at bruge denne facilitet med lokalt cachede symboler som nedenfor.
dtrace -n "profile-1ms /arg1/ {ustack (50, 0); exit (0);} " -y C:\symbols. dtrace: beskrivelse 'profile-1ms ' matchede 1 probe. CPU ID FUNKTION: NAVN 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0
Live dump support
Windows bruger almindeligvis noget, der hedder Levende losseplads for at hjælpe med hurtigt at diagnosticere problemer. Live dumps hjælper med fejlfinding af problemer, der involverer flere processer eller systemomfattende problemer uden nedetid. I 20H1 kan DTrace på Windows bruges til at fange et live dump inde fra et D-script ved hjælp af lkd() DTrace facilitet. En almindelig anvendelse af denne facilitet er at instrumentere fejlstien (som returkode angiver en fejl) og fange et live dump lige ved fejlpunktet for avanceret diagnostik. For mere information om live dump support, se DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Udløser Live dump \n \");exit (0); }}" dtrace: beskrivelse 'syscallreturn' matchede 1411 prober. dtrace: tillader destruktive handlinger. CPU ID FUNKTION: NAVN 0 181 NtDeviceIoControlFile: return Udløser Live dump dir c:\Windows\LiveKernelReports Volumen i drev C har ingen etiket. Volumens serienummer er 70F4-B9F6 Directory of c:\Windows\LiveKernelReports 11/05/2019 05:20 PM<DIR>. 11/05/2019 17:20 <DIR>.. 11/05/2019 17:19 <DIR> DTRACE. 11/05/2019 17:20 53.395.456 DTRACE-20191105-1720.dmp.
ETW-sporing
ETW-sporing er det mest brugte værktøj til fejlretning på Windows. I DTrace på Windows 19H1 preview tilføjede vi understøttelse til instrumentering af sporloggede og manifesterede hændelser ved hjælp af ETW udbyder.
I 20H1 forbedrede vi denne facilitet yderligere for at skabe nye ETW-begivenheder på farten inde fra et D-script ved hjælp af ETW_Trace() anlæg. Dette hjælper i situationer, hvor eksisterende ETW-hændelser er utilstrækkelige, og du gerne vil tilføje yderligere ETW-sporingspunkter uden at ændre produktionskoden.
For mere information om ETW_Spor anlæg og ETW udbyder, se DTrace ETW.
/* Kørsel af GitHub ETW-udbydereksemplet (link nedenfor) for at udskrive nodehukommelsesinfo begivenhed. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d Partitions-id: 0. Antal: 1. Nodenummer: 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. }
Hvis du er interesseret i at installere DTrace, så tjek hvordan det kan gøres her.
Du kan downloade den opdaterede DTrace MSI-pakke herfra.
Her er det kildekode og avancerede scripts.
Kilde