DTrace теперь доступен в Windows
Следующее обновление функций Windows 10 (19H1, обновление за апрель 2019 г., версия 1903) будет включать поддержку DTrace, популярного средства отладки и диагностики с открытым исходным кодом. Первоначально он был создан для Solaris и стал доступен для Linux, FreeBSD, NetBSD и macOS. Microsoft портировала его на Windows.
DTrace - это среда динамической трассировки, которая позволяет администратору или разработчику в режиме реального времени просматривать систему в режиме пользователя или ядра. DTrace имеет высокоуровневый и мощный язык программирования в стиле C, который позволяет динамически вставлять точки трассировки. Используя эти динамически вставляемые точки трассировки, вы можете фильтровать условия или ошибки, писать код для анализа шаблонов блокировок, обнаружения взаимоблокировок и т. Д.
В Windows DTrace расширяет трассировку событий для Windows (ETW), которая является статической и не предоставляет возможности программной вставки точек трассировки во время выполнения.
Все API и функции, используемые dtrace.sys, являются документированными вызовами.
Microsoft реализовала специальный драйвер для Windows 10, который позволяет выполнять ряд ролей системного мониторинга. Драйвер будет включен в Windows 10 версии 1903. Кроме того, DTrace в настоящее время требует, чтобы Windows была запущена с включенным отладчиком ядра.
Исходный код перенесенного инструмента DTrace доступен на GitHub. Посетите страницу «DTrace в Windows»В рамках проекта OpenDTrace на GitHub, чтобы увидеть его.
Настройка DTrace в Windows 10
Предпосылки для использования функции
- Инсайдер Windows 10 сборка 18342 или выше
- Доступно только на x64 Windows и собирает информацию трассировки только для 64-битных процессов
-
Программа предварительной оценки Windows является включено а также настроен с действующей учетной записью Windows Insider.
- Посетите Настройки-> Обновление и безопасность-> Программа предварительной оценки Windows для получения подробной информации.
Инструкции:
-
Набор конфигурации BCD:
- bcdedit / установить dtrace на
- Обратите внимание: вам нужно снова установить опцию bcdedit, если вы обновитесь до новой сборки Insider
-
Скачать и установите пакет DTrace из центр загрузки.
- При этом устанавливаются компоненты пользовательского режима, драйверы и дополнительные пакеты функций по запросу, необходимые для работы DTrace.
- Необязательно: обновите Переменная среды PATH включать C: \ Program Files \ DTrace
- установить PATH =% PATH%; "C: \ Program Files \ DTrace"
- Настраивать путь символа
- Создайте новый каталог для локального кэширования символов. Пример: mkdir c: \ symbols
- Установленный _NT_SYMBOL_PATH= SRV * C: \ символы *http://msdl.microsoft.com/download/symbols
- DTrace автоматически загружает необходимые символы с сервера символов и кэширует их по локальному пути.
-
По желанию:Настроить отладчик ядра подключение к целевой машине (Ссылка MSDN). Это Только требуется, если вы хотите отслеживать события ядра с помощью FBT или других провайдеров.
- Обратите внимание, что вам нужно будет отключить Secureboot и Bitlocker на C:, (если он включен), если вы хотите настроить отладчик ядра.
- Перезагрузить целевая машина
Использование DTrace
- Откройте повышенная командная строка.
- Выполните одну из следующих команд:
# Сводка системных вызовов по программе за 5 секунд: dtrace -Fn "tick-5sec {exit (0);} syscallentry {@num [pid, execname] = count ();}" # Подведение итогов установки / отмены программы таймера для 3 секунды: dtrace -Fn "tick-3sec {exit (0);} syscall:: Nt * Timer *: entry {@ [probefunc, execname, pid] = count ();}" # Дамп структуры ядра системного процесса: (требуется путь символа к быть установлен) dtrace -n "BEGIN {print (* (struct nt`_EPROCESS *) nt`PsInitialSystemProcess); exit (0);}" # Трассировка путей через NTFS при запуске notepad.exe (требуется KD a
Команда dtrace -lvn системный вызов перечислит все зонды и их параметры, доступные от поставщика системных вызовов.
Ниже перечислены некоторые из поставщиков, доступных для Windows, и их инструменты.
- системный вызов - Системные вызовы NTOS
- fbt (Отслеживание границ функции) - ввод и возврат функции ядра
- пид - Отслеживание процессов в пользовательском режиме. Подобен FBT в режиме ядра, но также позволяет инструментировать произвольные смещения функций.
-
etw (Трассировка событий для Windows) - позволяет определять зонды для ETW. Этот поставщик помогает использовать существующие инструменты операционной системы в DTrace.
- Это одно из дополнений, которые мы сделали для DTrace, чтобы позволить ему раскрывать и получать всю информацию, которую Windows уже предоставляет в ETW.
Дополнительные примеры сценариев, применимых к сценариям Windows, можно найти в этом каталог образцов.
Источник: Microsoft