DTrace на Windows получава своите 20H1 актуализации с поддръжка на ARM64
DTrace е популярният инструмент за отстраняване на грешки и диагностика с отворен код. Първоначално е създаден за Solaris и стана достъпен за Linux, FreeBSD, NetBSD и macOS. Microsoft го пренесе към Windows и добавя част от актуализации към него с актуализация на функциите 20H1.
Реклама
DTrace е динамична рамка за проследяване, която позволява на администратор или разработчик да получи преглед в реално време в системата в режим на потребител или ядро. DTrace има високо ниво в стил C и мощен език за програмиране, който ви позволява да вмъквате динамично точки за проследяване. Използвайки тези динамично вмъкнати точки на проследяване, можете да филтрирате по условия или грешки, да пишете код за анализиране на модели на заключване, да откривате застой и т.н.
В Windows DTrace разширява проследяването на събития за Windows (ETW), което е статично и не предоставя възможност за програмно вмъкване на точки за проследяване по време на изпълнение.
Всички API и функционалности, използвани от dtrace.sys, са документирани извиквания.
Microsoft внедри специален драйвер за Windows 10, който позволява изпълняването на редица роли за мониторинг на системата. Драйверът е вграден в Windows 10, започвайки от версия 1903.
Започвайки от Windows 10 вътрешна версия 19041.21, DTrace идва със следните подобрения.
Визуализация на ARM64
Да, така е! DTrace вече поддържа ARM64 в режим на предварителен преглед. ARM64 MSI е наличен в връзката за изтегляне, посочена по-горе.
Можете да го използвате на вашия Surface Pro X изпълнява най-новата версия на Windows 10 Insider Preview (20H1), като се започне с 19041.21.
DTrace на Surface Pro X
Потребителски режим Stackwalk
В предварителния преглед съоръжението за stackwalk в DTrace беше ограничено до режим на ядрото (стек). Тази актуализация добавя поддръжка за стеквалк на потребителски режим (ustack). Подобно на стека, средството ustack е напълно съвместимо със спецификацията DTrace с отворен код. Той може да бъде извикан по три начина чрез посочване на рамки (дълбочина) и размер (засега игнорирани) или празни.
- Ustack (nframes, размер)
- Ustack (nframes)
- Ustack()
Докато ustack () може да определи адреса на извикващия кадър, когато сондата се задейства, стековите рамки ще го направят не се превежда в символи, докато действието ustack () не бъде обработено в потребителски режим от потребителя на DTrace. Изтеглянето на символи може да забави изхода. Следователно е по-добре да използвате това средство с локално кеширани символи, както е показано по-долу.
dtrace -n "profile-1ms /arg1/ {ustack (50, 0); изход (0);} " -y C:\символи. dtrace: описанието 'profile-1ms' съответства на 1 сонда. ИД на процесора ФУНКЦИЯ: ИМЕ 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc44
Поддръжка за изхвърляне на живо
Windows обикновено използва нещо, наречено Живо сметище за да помогне за бързо диагностициране на проблеми. Дъмповете на живо помагат при отстраняване на проблеми, включващи множество процеси или проблеми в цялата система без прекъсвания. В 20H1, DTrace на Windows може да се използва за заснемане на живо дъмп от вътрешността на D-скрипт с помощта на lkd() DTrace съоръжение. Често срещан случай на използване на това средство е да се инструментира пътя на грешката (като кодът за връщане показва неизправност) и да се заснеме живо сметище точно в точката на повреда за разширена диагностика. За повече информация относно поддръжката на изхвърляне на живо, вж DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Задействане на изхвърляне на живо \n \");изход (0); }}" dtrace: описанието 'syscallreturn' съответства на 1411 проби. dtrace: позволява разрушителни действия. ИД на процесора ФУНКЦИЯ: ИМЕ 0 181 NtDeviceIoControlFile: връщане Задействане Дирекция за изтегляне на живо c:\Windows\LiveKernelReports Томът в устройство C няма етикет. Серийният номер на тома е 70F4-B9F6 Директория на c:\Windows\LiveKernelReports 11/05/2019 17:20 ч.<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
ETW проследяване е най-често използваният инструмент за отстраняване на грешки в Windows. В DTrace на предварителен преглед на Windows 19H1 добавихме поддръжка за инструментиране на записани и проявени събития с помощта на ETW доставчик.
През 20H1 допълнително подобрихме това средство, за да създаваме нови ETW събития в движение от вътрешността на D-скрипт, използвайки ETW_Trace() съоръжение. Това помага в ситуации, когато съществуващите ETW събития са недостатъчни и бихте искали да добавите допълнителни точки за проследяване на ETW, без да променяте производствения код.
За повече информация относно ETW_Trace съоръжение и доставчик на ETW, виж DTrace ETW.
/* Изпълняване на пробата на доставчика на GitHub ETW (връзка по-долу) за отпечатване на събитие с информация за паметта на възела. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d Идентификатор на дял: 0. Брой: 1. Номер на възел: 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. }
Ако се интересувате от инсталиране на DTrace, вижте как може да се направи тук.
Можете да изтеглите актуализирания пакет DTrace MSI оттук.
Ето го програмен код и разширени скриптове.
Източник