DTrace для Windows получает обновления 20H1 с поддержкой ARM64

DTrace — это популярный инструмент для отладки и диагностики с открытым исходным кодом. Первоначально он был создан для Solaris и стал доступен для Linux, FreeBSD, NetBSD и macOS. Microsoft перенесла его на Windows и добавила в него часть обновлений с обновлением функции 20H1.

DTrace — это среда динамической трассировки, которая позволяет администратору или разработчику в режиме реального времени просматривать систему в режиме пользователя или ядра. DTrace имеет высокоуровневый и мощный язык программирования в стиле C, который позволяет динамически вставлять точки трассировки. Используя эти динамически вставленные точки трассировки, вы можете фильтровать условия или ошибки, писать код для анализа шаблонов блокировок, обнаруживать взаимоблокировки и т. Д.

В Windows DTrace расширяет трассировку событий для Windows (ETW), которая является статической и не предоставляет возможности программной вставки точек трассировки во время выполнения.

Все API и функции, используемые dtrace.sys, являются документированными вызовами.

Dtrace в Windows

Microsoft реализовала специальный драйвер для Windows 10, который позволяет выполнять ряд ролей системного мониторинга. Драйвер встроен в Windows 10, начиная с версии 1903.

Начиная с инсайдерской сборки Windows 10 19041.21, DTrace содержит следующие улучшения.

СОДЕРЖАНИЕ Предварительный просмотр ARM64 Пользовательский режим Stackwalk Поддержка живого дампа Трассировка трассировки событий Windows

Предварительный просмотр ARM64

Да все верно! DTrace теперь поддерживает ARM64 в режиме предварительного просмотра. ARM64 MSI доступен по ссылке для скачивания, указанной выше.

Вы можете использовать его на своемSurface Pro X запущена последняя сборка Windows 10 Insider Preview (20H1), начиная с 19041.21.

Dtrace на рукеDTrace на Surface Pro X

Пользовательский режим Stackwalk

В предварительном просмотре средство обхода стека в DTrace было ограничено режимом ядра (стеком). Это обновление добавляет поддержку функции обхода стека в пользовательском режиме (ustack). Как и стек, средство ustack полностью совместимо со спецификацией DTrace с открытым исходным кодом. Его можно вызвать тремя способами, указав фреймы (глубину) и размер (пока игнорируются) или пустоту.

  • Ustack (nframes, размер)
  • Ustack (nframes)
  • Ustack ()

Хотя ustack () может определять адрес вызывающего кадра при срабатывании зонда, кадры стека не будут преобразованы в символы до тех пор, пока действие ustack () не будет обработано в пользовательском режиме потребителем DTrace. Загрузка символа может замедлить вывод. Следовательно, лучше использовать эту возможность с локально кэшированными символами, как показано ниже.

dtrace -n "profile-1ms / arg1 / {ustack (50, 0); exit (0);}" -y C: \ symbols dtrace: описание 'profile-1ms' соответствует 1 датчику ИДЕНТИФИКАЦИЯ ЦП ФУНКЦИЯ: НАЗВАНИЕ 0 3802: профиль-1 мс ntdll`ZwAllocateVirtualMemory + 0x14 ntdll`RtlAllocateHeap + 0x3ded ntdll`RtlAllocateHeap + 0x763 ucrtbase`malloc_base + 0x44

Поддержка живого дампа

Windows обычно использует так называемый Live dump, чтобы помочь быстро диагностировать проблемы. Оперативные дампы помогают устранять неполадки, связанные с несколькими процессами или общесистемными проблемами, без простоев. В 20H1 DTrace в Windows можно использовать для захвата живого дампа из D-скрипта с помощью средства Lkd () DTrace. Обычно это средство используется для определения пути ошибки (например, код возврата указывает на сбой) и получения оперативного дампа прямо в точке сбоя для расширенной диагностики. Для получения дополнительной информации о поддержке живого дампа см.DTrace Live Dump.

dtrace -wn "системный вызов ::: return {if (arg0! = 0xc0000001UL) {lkd (0); printf (\" Запуск оперативного дампа \ n \ "); exit (0);}}» dtrace: description 'syscall ::: return' соответствует 1411 зондам dtrace: разрешающие деструктивные действия ИДЕНТИФИКАЦИЯ ЦП ФУНКЦИЯ: НАЗВАНИЕ 0 181 NtDeviceIoControlFile: return Запуск динамического дампа
каталог c: \ Windows \ LiveKernelReports Том на диске C не имеет метки. Серийный номер тома 70F4-B9F6.
Каталог c: \ Windows \ LiveKernelReports
05.11.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 

Трассировка трассировки событий Windows

Трассировка ETW — это наиболее часто используемый инструмент для отладки в Windows. В предварительную версию DTrace в Windows 19H1 мы добавили поддержку инструментовки отслеживаемых и проявленных событий с помощью поставщика трассировки событий Windows.

В 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. отсюда.

Вот исходный код а также продвинутые скрипты.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован.