DTrace na Windowsima prima svoja ažuriranja 20H1 s podrškom za ARM64
DTrace je popularan alat za otklanjanje pogrešaka i dijagnostiku otvorenog koda. Izvorno je napravljen za Solaris, a postao je dostupan za Linux, FreeBSD, NetBSD i macOS. Microsoft ga je prenio na Windows i dodaje mu dio ažuriranja s ažuriranjem značajke 20H1.
Oglas
DTrace je dinamički okvir za praćenje koji administratoru ili programeru omogućuje uvid u sustav u stvarnom vremenu u korisničkom ili kernel načinu rada. DTrace ima visoku razinu i moćan programski jezik u C stilu koji vam omogućuje dinamičko umetanje točaka praćenja. Koristeći ove dinamički umetnute točke praćenja, možete filtrirati uvjete ili pogreške, napisati kod za analizu uzoraka zaključavanja, otkriti zastoje itd.
U sustavu Windows, DTrace proširuje praćenje događaja za Windows (ETW) koje je statično i ne pruža mogućnost programskog umetanja točaka praćenja tijekom izvođenja.
Svi API-ji i funkcionalnosti koje koristi dtrace.sys su dokumentirani pozivi.
Microsoft je implementirao poseban upravljački program za Windows 10 koji omogućuje obavljanje niza uloga nadzora sustava. Upravljački program je ugrađen u Windows 10 počevši od verzije 1903.
Počevši od insajderske verzije sustava Windows 10 19041.21, DTrace dolazi sa sljedećim poboljšanjima.
ARM64 pregled
Da, tako je! DTrace sada podržava ARM64 u načinu pregleda. ARM64 MSI dostupan je na gore navedenoj poveznici za preuzimanje.
Možete ga koristiti na svom Surface Pro X pokreće najnoviju verziju Windows 10 Insider Preview (20H1), počevši od 19041.21.
DTrace na Surface Pro X
Korisnički način Stackwalk
U pretpregledu, mogućnost stackwalk-a u DTraceu bila je ograničena na način rada jezgre (stog). Ovo ažuriranje dodaje podršku za stackwalk u korisničkom načinu rada (ustack). Kao i stog, ustack facility je potpuno kompatibilan sa open source specifikacijom DTrace. Može se pozvati na tri načina navođenjem okvira (dubina) i veličine (za sada zanemareno) ili void.
- Ustack (nframes, veličina)
- Ustack (nframes)
- Ustack()
Dok ustack () može odrediti adresu pozivajućeg okvira kada se sonda aktivira, okviri steka će neće biti prevedena u simbole sve dok DTrace potrošač ne obradi akciju ustack () u korisničkom načinu. Preuzimanje simbola može usporiti izlaz. Stoga je bolje koristiti ovu mogućnost s lokalno predmemoriranim simbolima kao što je dolje.
dtrace -n "profil-1ms /arg1/ {ustack (50, 0); izlaz (0);} " -y C:\simboli. dtrace: opis 'profil-1ms' odgovara 1 sondi. FUNKCIJA ID CPU-a: NAME 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc44
Podrška za dump uživo
Windows obično koristi nešto tzv Živo smetlište za brzo dijagnosticiranje problema. Live dumpovi pomažu u rješavanju problema koji uključuju više procesa ili probleme u cijelom sustavu bez zastoja. U 20H1, DTrace na Windowsima može se koristiti za snimanje live dump iz D-skripte pomoću lkd() DTrace objekt. Uobičajeni slučaj upotrebe ove mogućnosti je instrumentiranje putanje pogreške (kao što je povratni kod označava neuspjeh) i hvatanje live dump točno na točki kvara za naprednu dijagnostiku. Za više informacija o podršci za live dump pogledajte DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Pokretanje live dump \n \");exit (0); }}" dtrace: opis 'syscallreturn' odgovara 1411 sondi. dtrace: dopušta destruktivne radnje. CPU ID FUNKCIJA: NAZIV 0 181 NtDeviceIoControlFile: povratak Pokretanje Live dump dir c:\Windows\LiveKernelReports Volumen u pogonu C nema oznaku. Serijski broj svezaka je 70F4-B9F6 Direktorij c:\Windows\LiveKernelReports 05.11.2019. 17:20<DIR>. 11/05/2019 17:20 sati <DIR>.. 11/05/2019 17:19 sati <DIR> DTRACE. 5.11.2019. 17:20 53.395.456 DTRACE-20191105-1720.dmp.
ETW Tracing
ETW praćenje je najčešće korišteni alat za otklanjanje pogrešaka u sustavu Windows. U DTrace u pregledu Windows 19H1 dodali smo podršku za instrumentiranje praćenih i manifestiranih događaja pomoću ETW pružatelj usluga.
U 20H1 dodatno smo poboljšali ovu mogućnost za stvaranje novih ETW događaja u hodu iz D-skripte koristeći ETW_Trace() objektu. To pomaže u situacijama kada su postojeći ETW događaji nedostatni i želite dodati dodatne točke praćenja ETW bez mijenjanja proizvodnog koda.
Za više informacija o ETW_Trace objekt i ETW pružatelj, vidjeti DTrace ETW.
/* Pokretanje uzorka pružatelja usluge GitHub ETW (veza ispod) za ispis događaja informacija o memoriji čvora. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d ID particije: 0. Broji: 1. Broj čvora: 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 OgromanZeroPageCount = 0. }
Ako ste zainteresirani za instalaciju DTracea, provjerite kako se to može učiniti ovdje.
Možete preuzeti ažurirani DTrace MSI paket odavde.
Evo ga izvorni kod i napredne skripte.
Izvor