DTrace på Windows tar emot sina 20H1-uppdateringar med ARM64-stöd
DTrace är det populära verktyget för felsökning och diagnostik med öppen källkod. Den har ursprungligen byggts för Solaris och blev tillgänglig för Linux, FreeBSD, NetBSD och macOS. Microsoft har porterat den till Windows och lägger till en del uppdateringar till den med 20H1-funktionsuppdatering.
Annons
DTrace är ett dynamiskt spårningsramverk som låter en administratör eller utvecklare få en realtidsinblick i ett system antingen i användar- eller kärnläge. DTrace har ett högnivå- och kraftfullt programmeringsspråk i C-stil som låter dig infoga spårpunkter dynamiskt. Genom att använda dessa dynamiskt infogade spårpunkter kan du filtrera på förhållanden eller fel, skriva kod för att analysera låsmönster, upptäcka blockerade låsningar, etc.
På Windows utökar DTrace Event Tracing för Windows (ETW) som är statisk och inte ger möjlighet att programmässigt infoga spårningspunkter under körning.
Alla API: er och funktionalitet som används av dtrace.sys är dokumenterade anrop.
Microsoft har implementerat en speciell drivrutin för Windows 10 som gör det möjligt att utföra ett antal systemövervakningsroller. Drivrutinen är inbyggd i Windows 10 från och med version 1903.
Från och med Windows 10 insider build 19041.21 kommer DTrace med följande förbättringar.
ARM64 förhandsvisning
Ja det stämmer! DTrace stöder nu ARM64 i förhandsgranskningsläge. ARM64 MSI är tillgänglig i nedladdningslänken ovan.
Du kan använda den på din Surface Pro X kör den senaste versionen av Windows 10 Insider Preview (20H1), som börjar med 19041.21.
DTrace på Surface Pro X
Användarläge Stackwalk
I förhandsvisningen var stackwalk-anläggningen i DTrace begränsad till kärnläge (stack). Den här uppdateringen lägger till stöd för stackwalk-funktion i användarläge (ustack). Precis som stack är ustack-funktionen helt kompatibel med DTrace-specifikationen för öppen källkod. Den kan anropas på tre sätt genom att ange ramar (djup) och storlek (ignoreras för närvarande) eller ogiltig.
- Ustack (nframes, storlek)
- Ustack (nframes)
- Ustack()
Medan ustack () kan bestämma adressen för den anropande ramen när sonden avfyras, kommer stackramarna inte översättas till symboler förrän ustack ()-åtgärden bearbetas i användarläge av DTrace-konsument. Symbolnedladdning kan sakta ner utmatningen. Därför är det bättre att använda den här funktionen med lokalt cachade symboler som nedan.
dtrace -n "profile-1ms /arg1/ {ustack (50, 0); avsluta (0);} " -y C:\symbols. dtrace: beskrivning 'profile-1ms ' matchade 1 sond. CPU ID FUNKTION: NAMN 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0
Live dump support
Windows använder vanligtvis något som kallas Levande soptipp för att snabbt kunna diagnostisera problem. Live dumps hjälper till med felsökning av problem som involverar flera processer eller systemomfattande problem utan stillestånd. Under 20H1 kan DTrace på Windows användas för att fånga en livedump inifrån ett D-script med hjälp av lkd() DTrace-anläggning. Ett vanligt användningsfall för den här funktionen är att instrumentera felsökväg (som returkod indikerar ett fel) och fånga en livedump precis vid felpunkten för avancerad diagnostik. För mer information om live dump support, se DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Utlöser livedump \n \");exit (0); }}" dtrace: beskrivning 'syscallreturn' matchade 1411 sonder. dtrace: tillåter destruktiva handlingar. CPU ID FUNKTION: NAMN 0 181 NtDeviceIoControlFile: return Utlöser Live dump dir c:\Windows\LiveKernelReports Volymen i enhet C har ingen etikett. Volymens serienummer är 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-spårning
ETW-spårning är det mest använda verktyget för felsökning på Windows. I DTrace på Windows 19H1-förhandsgranskningen lade vi till stöd för instrumentering av spårloggade och manifesterade händelser med hjälp av ETW-leverantör.
Under 20H1 förbättrade vi denna möjlighet ytterligare för att skapa nya ETW-händelser i farten inifrån ett D-script med hjälp av ETW_Trace() anläggningen. Detta hjälper i situationer där befintliga ETW-händelser är otillräckliga och du vill lägga till ytterligare ETW-spårningspunkter utan att ändra produktionskoden.
För mer information om ETW_Spåra anläggning och ETW-leverantör, ser DTrace ETW.
/* Kör GitHub ETW-leverantörsexemplet (länk nedan) för att skriva ut nodminnesinfohändelse. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d Partitions-ID: 0. Antal: 1. Nodnummer: 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. }
Om du är intresserad av att installera DTrace, kolla in hur det kan göras här.
Du kan ladda ner det uppdaterade DTrace MSI-paketet härifrån.
Här är det källkod och avancerade skript.
Källa