DTrace na Windows dostává své aktualizace 20H1 s podporou ARM64
DTrace je populární open source ladicí a diagnostický nástroj. Původně byl vytvořen pro Solaris a stal se dostupným pro Linux, FreeBSD, NetBSD a macOS. Microsoft jej přenesl na Windows a přidává k němu část aktualizací s aktualizací funkcí 20H1.
reklama
DTrace je dynamický sledovací rámec, který umožňuje správci nebo vývojáři nahlédnout do systému v reálném čase buď v uživatelském režimu, nebo v režimu jádra. DTrace má vysokou úroveň a výkonný programovací jazyk ve stylu C, který vám umožňuje dynamicky vkládat body sledování. Pomocí těchto dynamicky vkládaných trasovacích bodů můžete filtrovat podmínky nebo chyby, psát kód pro analýzu vzorů zámků, zjišťovat uváznutí atd.
V systému Windows rozšiřuje DTrace sledování událostí pro Windows (ETW), které je statické a neposkytuje možnost programově vkládat body sledování za běhu.
Všechna rozhraní API a funkce používané dtrace.sys jsou zdokumentovaná volání.
Společnost Microsoft implementovala speciální ovladač pro Windows 10, který umožňuje provádět řadu rolí monitorování systému. Ovladač je zabudován ve Windows 10 počínaje verzí 1903.
Počínaje Windows 10 insider build 19041.21 přichází DTrace s následujícími vylepšeními.
Náhled ARM64
Ano to je správně! DTrace nyní podporuje ARM64 v režimu náhledu. ARM64 MSI je k dispozici na výše uvedeném odkazu ke stažení.
Můžete jej použít na svém Surface Pro X běží nejnovější sestavení Windows 10 Insider Preview (20H1), počínaje 19041.21.
DTrace na Surface Pro X
Uživatelský režim Stackwalk
V náhledu byla funkce stackwalk v DTrace omezena na režim jádra (stack). Tato aktualizace přidává podporu pro uživatelský režim stackwalk (ustack). Stejně jako stack je i ustack zařízení plně kompatibilní s open source specifikací DTrace. Lze jej vyvolat třemi způsoby zadáním rámců (hloubka) a velikosti (prozatím ignorováno) nebo void.
- Ustack (nframes, velikost)
- Ustack (nframes)
- Ustack()
Zatímco ustack () může určit adresu volajícího rámce, když se spustí sonda, zásobníkové rámce ano nebudou převedeny na symboly, dokud nebude akce ustack () zpracována v uživatelském režimu spotřebitelem DTrace. Stahování symbolů může zpomalit výstup. Proto je lepší používat toto zařízení s místně uloženými symboly, jak je uvedeno níže.
dtrace -n "profil-1ms /arg1/ {ustack (50, 0); exit (0);} " -y C:\symboly. dtrace: popis 'profile-1ms' odpovídá 1 sondě. CPU ID FUNKCE: NAME 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0x44
Podpora živého výpisu
Windows běžně používá něco tzv Živá skládka pomoci rychle diagnostikovat problémy. Živé výpisy pomáhají s řešením problémů zahrnujících více procesů nebo problémů v celém systému bez prostojů. V 20H1 lze DTrace na Windows použít k zachycení živého výpisu z D-scriptu pomocí lkd() Zařízení DTrace. Běžným případem použití tohoto zařízení je cesta k chybě přístroje (jako návratový kód označuje selhání) a zachycení živého výpisu přímo v bodě selhání pro pokročilou diagnostiku. Další informace o podpoře živého výpisu viz DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Spouštění živého výpisu \n \");exit (0); }}" dtrace: popis 'syscallreturn ' odpovídal 1411 sondám. dtrace: umožňuje destruktivní akce. CPU ID FUNCTION: NAME 0 181 NtDeviceIoControlFile: return Spouštění živého výpisu dir c:\Windows\LiveKernelReports Svazek na jednotce C nemá žádné označení. Sériové číslo svazku je 70F4-B9F6 Adresář c:\Windows\LiveKernelReports 11/05/2019 17: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 sledování
ETW trasování je nejčastěji používaným nástrojem pro ladění ve Windows. V náhledu DTrace na Windows 19H1 jsme přidali podporu pro instrumentaci tracelogovaných a manifestovaných událostí pomocí poskytovatel ETW.
V 20H1 jsme dále vylepšili toto zařízení, abychom mohli vytvářet nové ETW události za běhu z D-scriptu pomocí ETW_Trace() zařízení. To pomáhá v situacích, kdy jsou stávající události ETW nedostatečné a chtěli byste přidat další trasovací body ETW bez úpravy produkčního kódu.
Pro více informací o ETW_Trace zařízení a poskytovatel ETW, vidět DTrace ETW.
/* Spuštění ukázky poskytovatele GitHub ETW (odkaz níže) pro tisk události informací o paměti uzlu. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d ID oddílu: 0. Počet: 1. Číslo uzlu: 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. }
Pokud máte zájem o instalaci DTrace, podívejte se, jak to lze provést tady.
Můžete si stáhnout aktualizovaný balíček DTrace MSI odtud.
Tady je to zdrojový kód a pokročilé skripty.
Zdroj