DTrace op Windows ontvangt zijn 20H1-updates met ARM64-ondersteuning
DTrace is de populaire open source tool voor foutopsporing en diagnose. Het is oorspronkelijk gebouwd voor Solaris en werd beschikbaar voor Linux, FreeBSD, NetBSD en macOS. Microsoft heeft het naar Windows geporteerd en voegt er een deel van de updates aan toe met de 20H1-functie-update.
Advertentie
DTrace is een dynamisch traceringsraamwerk waarmee een beheerder of ontwikkelaar een realtime kijkje in een systeem kan krijgen, in gebruikers- of kernelmodus. DTrace heeft een krachtige programmeertaal op hoog niveau in C-stijl waarmee u dynamisch traceerpunten kunt invoegen. Met behulp van deze dynamisch ingevoegde traceerpunten kunt u filteren op voorwaarden of fouten, code schrijven om vergrendelingspatronen te analyseren, deadlocks detecteren, enz.
Op Windows breidt DTrace Event Tracing for Windows (ETW) uit, dat statisch is en niet de mogelijkheid biedt om tijdens runtime programmatisch traceringspunten in te voegen.
Alle API's en functionaliteit die door dtrace.sys worden gebruikt, zijn gedocumenteerde aanroepen.
Microsoft heeft een speciaal stuurprogramma voor Windows 10 geïmplementeerd waarmee een aantal systeembewakingsrollen kan worden uitgevoerd. De driver is gebouwd in Windows 10 vanaf versie 1903.
Vanaf Windows 10 insider build 19041.21 wordt DTrace geleverd met de volgende verbeteringen.
ARM64 voorbeeld
Ja dat klopt! DTrace ondersteunt nu ARM64 in de voorbeeldmodus. De ARM64 MSI is beschikbaar via de bovenstaande downloadlink.
Je kunt het gebruiken op je Surface Pro X met de nieuwste build van Windows 10 Insider Preview (20H1), te beginnen met 19041.21.
DTrace op Surface Pro X
Gebruikersmodus Stackwalk
In de preview was de stackwalk-faciliteit in DTrace beperkt tot Kernel-modus (stack). Deze update voegt ondersteuning toe voor de gebruikersmodus stackwalk-faciliteit (stapel). Net als stack is de ustack-faciliteit volledig compatibel met de open source DTrace-specificatie. Het kan op drie manieren worden aangeroepen door frames (diepte) en grootte (voorlopig genegeerd) of ongeldig te specificeren.
- Ustack (nframes, grootte)
- Ustack (nframes)
- Ustack()
Terwijl ustack () het adres van het oproepende frame kan bepalen wanneer de sonde wordt geactiveerd, zullen de stapelframes: niet worden vertaald in symbolen totdat de actie ustack () is verwerkt in de gebruikersmodus door de DTrace-consument. Het downloaden van symbolen kan de uitvoer vertragen. Daarom is het beter om deze faciliteit te gebruiken met lokaal in de cache opgeslagen symbolen zoals hieronder.
dtrace -n "profile-1ms /arg1/ {ustack (50, 0); exit (0);} " -y C:\symbols. dtrace: beschrijving 'profile-1ms' kwam overeen met 1 sonde. CPU ID FUNCTIE: NAAM 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0x44
Live dump-ondersteuning
Windows gebruikt gewoonlijk iets genaamd Live dump om problemen snel te diagnosticeren. Live dumps helpen bij het oplossen van problemen met meerdere processen of systeembrede problemen zonder downtime. In 20H1 kan DTrace op Windows worden gebruikt om een live-dump van binnenuit een D-script vast te leggen met behulp van de lkd() DTrace-faciliteit. Een veelvoorkomend gebruik van deze faciliteit is om het foutpad te instrumenteren (zoals een retourcode een storing aangeeft) en een live-dump direct op het storingspunt vast te leggen voor geavanceerde diagnostiek. Voor meer informatie over live dump-ondersteuning, zie DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Live dump activeren \n \");exit (0); }}" dtrace: beschrijving 'syscallreturn' kwam overeen met 1411 probes. dtrace: destructieve acties toestaan. CPU ID FUNCTIE: NAME 0 181 NtDeviceIoControlFile: return Activeren Live dump dir c:\Windows\LiveKernelReports Volume in station C heeft geen label. Volume serienummer is 70F4-B9F6 Directory van c:\Windows\LiveKernelReports 11/05/2019 17:20 PM<DIR>. 11/05/2019 17:20 <DIR>.. 11/05/2019 17:19 <DIR> DRAAG. 11/05/2019 17:20 53.395.456 DTRACE-20191105-1720.dmp.
ETW-tracering
ETW-tracering is de meest gebruikte tool voor foutopsporing op Windows. In DTrace op Windows 19H1-preview hebben we ondersteuning toegevoegd voor het instrumenteren van getraceerde en gemanifesteerde gebeurtenissen met behulp van de ETW-provider.
In 20H1 hebben we deze faciliteit verder verbeterd om direct nieuwe ETW-evenementen te creëren vanuit een D-script met behulp van de ETW_Trace() faciliteit. Dit helpt in situaties waarin bestaande ETW-gebeurtenissen onvoldoende zijn en u extra ETW-traceerpunten wilt toevoegen zonder de productiecode te wijzigen.
Voor meer informatie over ETW_Trace faciliteit en ETW-provider, zien DTrace ETW.
/* Het voorbeeld van de GitHub ETW-provider uitvoeren (link hieronder) om de knooppuntgeheugeninfo-gebeurtenis af te drukken. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d Partitie-ID: 0. Telling: 1. Knoopnummer: 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. }
Als u geïnteresseerd bent in het installeren van DTrace, bekijk dan hoe u dit kunt doen hier.
U kunt het bijgewerkte DTrace MSI-pakket downloaden vanaf hier.
Hier is het broncode en geavanceerde scripts.
Bron