DTrace Windowsis saab oma 20H1 värskendused koos ARM64 toega
DTrace on populaarne avatud lähtekoodiga silumis- ja diagnostikatööriist. See loodi algselt Solarise jaoks ja sai kättesaadavaks Linuxi, FreeBSD, NetBSD ja macOS-i jaoks. Microsoft on selle üle kandnud Windowsi ja lisab sellele funktsioonivärskendusega 20H1 osa värskendustest.
DTrace on dünaamiline jälgimisraamistik, mis võimaldab administraatoril või arendajal vaadata süsteemi reaalajas kas kasutaja või kerneli režiimis. DTrace'il on C-stiilis kõrgetasemeline ja võimas programmeerimiskeel, mis võimaldab jälituspunkte dünaamiliselt sisestada. Neid dünaamiliselt sisestatud jälgimispunkte kasutades saate filtreerida tingimusi või vigu, kirjutada koodi lukumustrite analüüsimiseks, tuvastada ummikuid jne.
Windowsis laiendab DTrace Windowsi sündmuste jälgimist (ETW), mis on staatiline ja ei võimalda käivitamise ajal jälituspunkte programmiliselt sisestada.
Kõik dtrace.sys kasutatavad API-d ja funktsioonid on dokumenteeritud kõned.
Microsoft on juurutanud Windows 10 jaoks spetsiaalse draiveri, mis võimaldab täita mitmeid süsteemi jälgimise rolle. Draiver on sisse ehitatud Windows 10-sse alates versioonist 1903.
Alates Windows 10 siseringi järgust 19041.21 on DTrace'il järgmised täiustused.
ARM64 eelvaade
Jah see on õige! DTrace toetab nüüd ARM64 eelvaaterežiimis. ARM64 MSI on saadaval ülaltoodud allalaadimislingil.
Saate seda oma peal kasutada Surface Pro X kus töötab uusim Windows 10 Insider Preview (20H1) järg, alustades 19041.21.
Kasutajarežiim Stackwalk
Eelvaates piirdus DTrace'i stackwalki funktsioon Kerneli režiimiga (virnu). See värskendus lisab kasutajarežiimi stackwalk rajatise toe (ustack). Sarnaselt virnaga ühildub ka ustacki seade täielikult avatud lähtekoodiga DTrace'i spetsifikatsiooniga. Seda saab välja kutsuda kolmel viisil, määrates raamid (sügavus) ja suuruse (praegu ignoreeritakse) või tühine.
- Ustack (nframes, suurus)
- Ustack (nframes)
- Ustack()
Kuigi ustack () saab määrata kutsuva kaadri aadressi, kui sond käivitub, siis pinu kaadrid ei tõlgita sümboliteks enne, kui DTrace'i tarbija on ustack () toimingut kasutajarežiimis töötlenud. Sümbolite allalaadimine võib väljundit aeglustada. Seetõttu on parem kasutada seda võimalust kohaliku vahemällu salvestatud sümbolitega, nagu allpool.
dtrace -n "profiil-1ms /arg1/ {ustack (50, 0); exit (0);} " -y C:\symbols. dtrace: kirjeldus 'profiil-1ms' vastas 1 sondile. CPU ID FUNKTSIOON: NAME 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0x44
Live dump tugi
Windows kasutab tavaliselt midagi nn Live prügila et aidata probleeme kiiresti diagnoosida. Reaalajas dumps aitab lahendada probleeme, mis hõlmavad mitut protsessi või kogu süsteemi hõlmavaid probleeme, ilma seisakuta. 20. tunnil saab DTrace'i Windowsis kasutada D-skripti reaalajas tõmmise jäädvustamiseks, kasutades lkd() DTrace'i rajatis. Selle võimaluse tavaline kasutusjuhtum on tõrketee mõõtmine (nagu tagastuskood viitab tõrkele) ja otseteabe jäädvustamine otse rikkepunktis täpsema diagnostika jaoks. Lisateabe saamiseks reaalajas dump-toe kohta vt DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Reaalajas dump'i käivitamine \n \");exit (0); }}" dtrace: kirjeldus 'syscallreturn' vastas 1411 proovile. dtrace: destruktiivsete toimingute lubamine. CPU ID FUNKTSIOON: NAME 0 181 NtDeviceIoControlFile: return Käivitab reaalajas dump dir c:\Windows\LiveKernelReports Draivi C köitel pole silti. Köite seerianumber on 70F4-B9F6 Kataloog c:\Windows\LiveKernelReports 11.05.2019 17:20<REŽ>. 05.11.2019 17:20 <REŽ>.. 05.11.2019 17:19 <REŽ> DTRACE. 05.11.2019 17:20 53 395 456 DTRACE-20191105-1720.dmp.
ETW jälgimine
ETW jälgimine on Windowsis kõige sagedamini kasutatav tööriist silumiseks. Windows 19H1 eelvaate DTrace'is lisasime toe jälgitavate ja manifesteeritud sündmuste mõõtmiseks, kasutades ETW pakkuja.
20. poolaastal täiustasime seda võimalust veelgi, et luua uusi ETW sündmusi D-skripti seest, kasutades ETW_Trace() rajatis. See aitab olukordades, kus olemasolevatest ETW sündmustest ei piisa ja soovite lisada täiendavaid ETW jälgimispunkte ilma tootmiskoodi muutmata.
Lisateabe saamiseks ETW_Trace rajatis ja ETW pakkuja, vaata DTrace ETW.
/* GitHubi ETW pakkuja näidise (link allpool) käitamine sõlme mälu teabesündmuse printimiseks. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d Sektsiooni ID: 0. Arv: 1. Sõlme number: 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. }
Kui olete huvitatud DTrace'i installimisest, vaadake, kuidas seda teha siin.
Saate alla laadida värskendatud DTrace MSI paketi siit.
Siin see on lähtekood ja täiustatud skriptid.
Allikas