DTrace sistemoje Windows gauna 20H1 naujinimus su ARM64 palaikymu
DTrace yra populiarus atvirojo kodo derinimo ir diagnostikos įrankis. Iš pradžių jis buvo sukurtas „Solaris“ ir tapo prieinamas „Linux“, „FreeBSD“, „NetBSD“ ir „MacOS“. „Microsoft“ perkėlė jį į „Windows“ ir prideda dalį naujinimų su 20H1 funkcijų naujinimu.
DTrace yra dinaminė sekimo sistema, leidžianti administratoriui arba kūrėjui realiuoju laiku peržiūrėti sistemą vartotojo arba branduolio režimu. DTrace turi C stiliaus aukšto lygio ir galingą programavimo kalbą, kuri leidžia dinamiškai įterpti pėdsakų taškus. Naudodami šiuos dinamiškai įterptus pėdsakų taškus galite filtruoti pagal sąlygas ar klaidas, rašyti kodą, kad galėtumėte analizuoti užrakto modelius, aptikti aklavietes ir kt.
Sistemoje Windows DTrace išplečia įvykių sekimą, skirtą Windows (ETW), kuris yra statinis ir nesuteikia galimybės programiškai įterpti sekimo taškų vykdymo metu.
Visos dtrace.sys naudojamos API ir funkcijos yra dokumentuoti skambučiai.
„Microsoft“ įdiegė specialią „Windows 10“ tvarkyklę, leidžiančią atlikti daugybę sistemos stebėjimo vaidmenų. Tvarkyklė sukurta „Windows 10“, pradedant nuo 1903 versijos.
Pradedant nuo „Windows 10 Insider build“ 19041.21, „DTrace“ yra su šiais patobulinimais.
ARM64 peržiūra
Taip, teisingai! DTrace dabar palaiko ARM64 peržiūros režimu. ARM64 MSI galima rasti aukščiau pateiktoje atsisiuntimo nuorodoje.
Galite naudoti jį savo Surface Pro X veikia naujausia Windows 10 Insider Preview (20H1) versija, pradedant nuo 19041.21.
Vartotojo režimas „Stackwalk“.
Peržiūroje „DTrace“ stackwalk priemonė buvo apribota branduolio režimu (stack). Šis naujinimas prideda palaikymą vartotojo režimo stackwalk įrenginiui (ustack). Kaip ir stack, ustack įrenginys yra visiškai suderinamas su atvirojo kodo DTrace specifikacija. Jį galima iškviesti trimis būdais, nurodant kadrus (gylį) ir dydį (kol kas nepaisoma) arba negaliojantį.
- Ustack (nframes, dydis)
- Ustack (nframes)
- Ustack ()
Nors ustack () gali nustatyti skambinančio rėmelio adresą, kai zondas įsijungia, stack kadrai negali būti paverčiami simboliais, kol DTrace vartotojas neapdoros ustack () veiksmo vartotojo režimu. Simbolių atsisiuntimas gali sulėtinti išvestį. Todėl geriau naudoti šią funkciją su vietiniais talpyklos simboliais, kaip nurodyta toliau.
dtrace -n "profile-1ms /arg1/ {ustack (50, 0); išeiti (0);} " -y C:\ymbols. dtrace: aprašymas 'profile-1ms' atitiko 1 zondą. CPU ID FUNKCIJA: NAME
Tiesioginio išmetimo palaikymas
„Windows“ paprastai naudoja tai, kas vadinama Gyvas sąvartynas padėti greitai diagnozuoti problemas. Tiesioginės iškrovos padeda pašalinti triktis, susijusias su keliais procesais, arba visos sistemos problemas be prastovų. 2010 m. DTrace sistemoje Windows galima naudoti norint užfiksuoti tiesioginį išrašymą iš D scenarijaus, naudojant lkd() DTrace įrenginys. Įprastas šios priemonės naudojimo atvejis yra nustatyti klaidos kelią (kaip grąžinimo kodas rodo gedimą) ir užfiksuoti tiesioginį išmetimą gedimo vietoje, kad būtų atlikta pažangi diagnostika. Norėdami gauti daugiau informacijos apie tiesioginio iškrovimo palaikymą, žr DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Tiesioginio išrašymo suaktyvinimas \n \");išeiti (0); }}" dtrace: aprašymas 'syscallreturn' atitiko 1411 zondų. dtrace: leidžiantys destruktyvius veiksmus. CPU ID FUNKCIJA: PAVADINIMAS 0 181 NtDeviceIoControlFile: return Suaktyvina tiesioginį išrašymą dir c:\Windows\LiveKernelReports C disko tomas neturi etiketės. Tomo serijos numeris yra 70F4-B9F6 Katalogas c:\Windows\LiveKernelReports 2019-11-05 17:20<REŽ>. 2019-11-05 17:20 val <REŽ>.. 2019-11-05 17:19 <REŽ> DTRACE. 2019-11-05 17:20 53 395 456 DTRACE-20191105-1720.dmp.
ETW sekimas
ETW sekimas yra dažniausiai naudojamas „Windows“ derinimo įrankis. „Windows 19H1“ peržiūroje „DTrace“ pridėjome palaikymą, skirtą stebėti užregistruotus ir rodomus įvykius naudojant ETW teikėjas.
Pirmąjį 20 pusmetį mes dar labiau patobulinome šią galimybę, kad sukurtume naujus ETW įvykius iš D scenarijaus, naudodami ETW_Trace() įrenginiu. Tai padeda situacijose, kai esamų ETW įvykių nepakanka ir norite pridėti papildomų ETW sekimo taškų nekeisdami gamybos kodo.
Norėdami gauti daugiau informacijos apie ETW_Trace įrenginį ir ETW teikėjas, pamatyti DTrace ETW.
/* Paleidžiamas „GitHub ETW“ teikėjo pavyzdys (nuoroda toliau), kad būtų išspausdintas mazgo atminties informacijos įvykis. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d Skilties ID: 0. Skaičiavimas: 1. Mazgo numeris: 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. }
Jei jus domina DTrace įdiegimas, patikrinkite, kaip tai padaryti čia.
Galite atsisiųsti atnaujintą DTrace MSI paketą iš čia.
štai pirminis kodas ir pažangūs scenarijai.
Šaltinis