Windows Tips & News

DTrace på Windows mottar sine 20H1-oppdateringer med ARM64-støtte

click fraud protection

DTrace er det populære åpen kildekode-feilsøkings- og diagnoseverktøyet. Den har opprinnelig blitt bygget for Solaris, og ble tilgjengelig for Linux, FreeBSD, NetBSD og macOS. Microsoft har overført den til Windows, og legger til en del oppdateringer til den med 20H1-funksjonsoppdatering.

DTrace er et dynamisk sporingsrammeverk som lar en administrator eller utvikler få en sanntidskikk inn i et system enten i bruker- eller kjernemodus. DTrace har et C-stil høyt nivå og kraftig programmeringsspråk som lar deg sette inn sporpunkter dynamisk. Ved å bruke disse dynamisk innsatte sporingspunktene kan du filtrere på forhold eller feil, skrive kode for å analysere låsemønstre, oppdage vranglås osv.

På Windows utvider DTrace Event Tracing for Windows (ETW) som er statisk og ikke gir mulighet til å programmere sette inn sporingspunkter under kjøring.

Alle APIer og funksjonalitet som brukes av dtrace.sys er dokumenterte kall.

Microsoft har implementert en spesiell driver for Windows 10 som gjør det mulig å utføre en rekke systemovervåkingsroller. Driveren er bygget i Windows 10 fra og med versjon 1903.

Fra og med Windows 10 insider build 19041.21 kommer DTrace med følgende forbedringer.

ARM64 forhåndsvisning

Ja, det er riktig! DTrace støtter nå ARM64 i forhåndsvisningsmodus. ARM64 MSI er tilgjengelig i nedlastingslenken som er oppført ovenfor.

Du kan bruke den på din Surface Pro X kjører den nyeste versjonen av Windows 10 Insider Preview (20H1), starter med 19041.21.

DTrace på Surface Pro X

Brukermodus Stackwalk

I forhåndsvisningen var stackwalk-anlegget i DTrace begrenset til kjernemodus (stack). Denne oppdateringen legger til støtte for brukermodus stackwalk-fasilitet (ustack). I likhet med stack, er ustack-fasiliteten fullt kompatibel med åpen kildekode DTrace-spesifikasjon. Den kan påberopes på tre måter ved å spesifisere rammer (dybde) og størrelse (ignoreres foreløpig) eller ugyldig.

  • Ustack (nframes, størrelse)
  • Ustack (nframes)
  • Ustack()

Mens ustack () kan bestemme adressen til den anropende rammen når sonden utløses, vil stackrammene ikke oversettes til symboler før ustack-handlingen () er behandlet i brukermodus av DTrace-forbrukeren. Symbolnedlasting kan bremse utgangen. Derfor er det bedre å bruke denne funksjonen med lokalt bufrede symboler som nedenfor.

dtrace -n "profile-1ms /arg1/ {ustack (50, 0); exit (0);} " -y C:\symbols. dtrace: beskrivelse 'profile-1ms ' matchet 1 probe. CPU ID FUNKSJON: NAVN 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0

Live dump-støtte

Windows bruker vanligvis noe som heter Levende dump for å raskt diagnostisere problemer. Live dumps hjelper med feilsøking av problemer som involverer flere prosesser eller systemomfattende problemer uten nedetid. I 20H1 kan DTrace på Windows brukes til å fange en live dump fra innsiden av et D-script ved å bruke lkd() DTrace-anlegg. Et vanlig brukstilfelle av denne funksjonen er å instrumentere feilbane (som returkode indikerer en feil) og fange opp en live dump rett ved feilpunktet for avansert diagnostikk. For mer informasjon om live dump-støtte, se DTrace Live Dump.

dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Utløser Live dump \n \");exit (0); }}" dtrace: beskrivelse 'syscallreturn' samsvarte med 1411 prober. dtrace: tillater destruktive handlinger. CPU ID FUNKSJON: NAME 0 181 NtDeviceIoControlFile: return Utløser Live dump dir c:\Windows\LiveKernelReports Volum i stasjon C har ingen etikett. Volumets 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 brukte verktøyet for feilsøking på Windows. I DTrace på Windows 19H1 forhåndsvisning la vi til støtte for instrumentering av sporloggede og manifesterte hendelser ved å bruke ETW-leverandør.

I 20H1 forbedret vi denne funksjonen ytterligere for å lage nye ETW-hendelser på farten fra innsiden av et D-script ved å bruke ETW_Trace() anlegget. Dette hjelper i situasjoner der eksisterende ETW-hendelser er utilstrekkelige og du ønsker å legge til flere ETW-sporingspunkter uten å endre produksjonskoden.

For mer informasjon om ETW_Trace anlegg og ETW-leverandør, se DTrace ETW.

/* Kjører GitHub ETW-leverandøreksemplet (lenke nedenfor) for å skrive ut nodeminneinfohendelse. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d Partisjons-ID: 0. Antall: 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 interessert i å installere DTrace, sjekk ut hvordan det kan gjøres her.

Du kan laste ned den oppdaterte DTrace MSI-pakken herfra.

Her er det kildekode og avanserte skript.

Kilde

Last ned Last ned Blister v1.1 Skin for AIMP3

Denne nettsiden bruker informasjonskapsler for å forbedre opplevelsen din mens du navigerer gjenn...

Les mer

Last ned Last ned Big City Night Skin for AIMP3

Denne nettsiden bruker informasjonskapsler for å forbedre opplevelsen din mens du navigerer gjenn...

Les mer

Last ned Last ned DerBolt Skin for AIMP3

Denne nettsiden bruker informasjonskapsler for å forbedre opplevelsen din mens du navigerer gjenn...

Les mer