Microsoft портировал DTrace для Windows

Компания Microsoft объявила о портировании системы динамической отладки DTrace для платформы Windows. Подготовленные в рамках проделанной работы изменения, за исключением драйвера ядра, размещены в форме отдельной ветки в репозитории проекта OpenDTrace, нацеленного на создание переносимой реализации DTrace, способной работать в различных операционных системах. В течение нескольких месяцев планируется добиться включения кода в основной состав OpenDTrace.

Поддержка DTrace в Windows 10 доступна начиная с экспериментальной сборки 18342. Для включения следует активировать опцию dtrace («bcdedit /set dtrace on») и установить специально подготовленный msi-пакет. Для отладки событий в ядре Windows дополнительно требуется настройка режима удалённой отладки. Управление осуществляется при помощи штатной команды dtrace. Поддерживаются такие провайдеры как syscall (отлеживание системных вызовов NTOS), fbt (отслеживание обращений к функциям ядра), pid (отслеживания процессов в пространстве пользователя) и etw (трассировка событий Windows).

Скрипты на языке D компилируются в промежуточный формат DIF и передаётся для выполнения в специальную виртуальную машину DIF Virtual Machine, работающую на уровне ядра и реализованную в форме драйвера dtrace.sys. Дополнительно применяется ещё один проприетарный драйвер traceext.sys, предоставляющий на уровне ядра Windows функции трассировки, на основе которых реализованы все основные провайдеры DTrace.

0_1552370999.png

Изначально технология DTrace была разработана для операционной системы Solaris для решения задач по динамической трассировке ядра системы и конечных приложений. DTrace предоставляет пользователю возможность детально отслеживать поведение системы и в режиме реального времени производить диагностику проблем, не влияя в процессе отладки на работу и производительность исследуемых приложений, что позволяет организовать анализ работающих систем на лету. Код инструментария и модуля для ядра Linux поставляются компанией Oracle под лицензией GPLv2. Проект OpenDTrace был создан до перелицензирования и поэтому остаётся под лицензией CDDL, несовместимой с GPL.

©  OpenNet