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
В предварительной версии возможность обхода стека в DTrace была ограничена режимом ядра (стеком). Это обновление добавляет поддержку функции обхода стека в пользовательском режиме (Устак). Как и стек, средство ustack полностью совместимо со спецификацией DTrace с открытым исходным кодом. Его можно вызвать тремя способами, указав фреймы (глубину) и размер (пока игнорируются) или пустоту.
- Ustack (nframes, размер)
- Ustack (nframes)
- Ustack ()
Хотя ustack () может определить адрес вызывающего кадра при срабатывании зонда, кадры стека будут не преобразовываться в символы до тех пор, пока действие ustack () не будет обработано в пользовательском режиме потребителем DTrace. Загрузка символа может замедлить вывод. Следовательно, лучше использовать это средство с локально кэшированными символами, как показано ниже.
dtrace -n "профиль-1ms / arg1 / {ustack (50, 0); exit (0);} "-y C: \ symbols. dtrace: description 'profile-1ms' соответствует 1 зонд. ID ЦП ФУНКЦИЯ: ИМЯ 0 3802: profile-1ms ntdll`ZwAllocateVirtualMemory + 0x14 ntdll`RtlAllocateHeap + 0x3ded ntdll`RtlAllocateHeap + 0x763 ucrtbase`malloc_base + 0x44
Поддержка живого дампа
Windows обычно использует то, что называется Живой дамп чтобы помочь быстро диагностировать проблемы. Живые дампы помогают устранять неполадки, связанные с несколькими процессами или общесистемными проблемами, без простоев. В 20H1 DTrace в Windows можно использовать для захвата оперативного дампа из D-скрипта с помощью lkd () Средство DTrace. Обычно это средство используется для определения пути ошибки (например, код возврата указывает на сбой) и получения оперативного дампа прямо в точке сбоя для расширенной диагностики. Для получения дополнительной информации о поддержке живого дампа см. Живой дамп DTrace.
dtrace -wn "syscallreturn {если (arg0! = 0xc0000001UL) {lkd (0); printf (\ "Запуск оперативного дампа \ n \"); exit (0); }}" dtrace: description 'syscallreturn' соответствует 1411 зондам. dtrace: разрешает деструктивные действия. ИД ЦП ФУНКЦИЯ: NAME 0 181 NtDeviceIoControlFile: return Запуск каталога динамического дампа c: \ Windows \ LiveKernelReports Том на диске C не имеет метки. Серийный номер тома 70F4-B9F6 Каталог c: \ Windows \ LiveKernelReports 11/05/2019 17:20<DIR>. 05.11.2019 17:20 <DIR>.. 05.11.2019 17:19 <DIR> DTRACE. 05.11.2019 17:20 53,395,456 DTRACE-20191105-1720.dmp.
Трассировка ETW
Трассировка трассировки событий Windows это наиболее часто используемый инструмент для отладки в Windows. В предварительную версию DTrace в Windows 19H1 мы добавили поддержку инструментовки отслеживаемых и проявленных событий с помощью Поставщик ETW.
В 20H1 мы дополнительно усовершенствовали эту возможность, чтобы на лету создавать новые события ETW из D-скрипта с помощью ETW_Trace () средство. Это помогает в ситуациях, когда существующих событий трассировки событий Windows недостаточно, и вы хотите добавить дополнительные точки трассировки трассировки событий Windows, не изменяя производственный код.
Для получения дополнительной информации о 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 ID раздела: 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, узнайте, как это можно сделать. здесь.
Вы можете скачать обновленный MSI-пакет DTrace. отсюда.
Вот исходный код а также расширенные скрипты.
Источник