Следующее обновление функций Windows 10 (19H1, обновление за апрель 2019 г., версия 1903) будет включать поддержку DTrace, популярного средства отладки и диагностики с открытым исходным кодом. Первоначально он был создан для Solaris и стал доступен для Linux, FreeBSD, NetBSD и macOS. Microsoft перенесла его на Windows.
DTrace – это платформа динамической трассировки, которая позволяет администратору или разработчику получить настоящую -time заглянуть в систему в режиме пользователя или ядра. DTrace имеет высокоуровневый и мощный язык программирования в стиле C, который позволяет динамически вставлять точки трассировки. Используя эти динамически вставленные точки трассировки, вы можете фильтровать условия или ошибки, писать код для анализа шаблонов блокировок, обнаруживать взаимоблокировки и т. Д.
В Windows DTrace расширяет трассировку событий для Windows (ETW), которая является static и не предоставляет возможности программной вставки точек трассировки во время выполнения.
Все API и функции, используемые dtrace.sys, являются документированными вызовами.
Microsoft реализовала специальный драйвер для Windows 10, который позволяет выполнять ряд ролей системного мониторинга. Драйвер будет включен в Windows 10 версии 1903. Кроме того, DTrace в настоящее время требует, чтобы Windows была запущена с включенным отладчиком ядра.
Исходный код для перенесенного инструмента DTrace доступен на GitHub. Посетите страницу « DTrace в Windows » в проекте OpenDTrace на GitHub, чтобы увидеть его.
Настройка DTrace в Windows 10
Предварительные требования для использования функции
- Windows 10 Insider build 18342 или выше
- Доступно только в x64 Windows и собирает информацию трассировки только для 64-битных процессов.
- Программа предварительной оценки Windows включен и настроен с действующей учетной записью Windows Insider
- Посетите Настройки-> Обновление и безопасность-> Программа предварительной оценки Windows для подробностей
Инструкции:
- Настройка конфигурации BCD :
- bcdedit/set dtrace on
- Обратите внимание: вам нужно снова установить параметр bcdedit, если вы обновитесь до новая сборка Insider
- Загрузите и установите пакет DTrace из центр загрузки .
- При этом устанавливаются компоненты пользовательского режима, драйверы и дополнительные пакеты функций по запросу, необходимые для работы DTrace.
- set PATH =% PATH%; “C: Program Files DTrace “
- Создание нового каталога для кэширования символы локально. Пример: mkdir c: symbols
- Установить _NT_SYMBOL_PATH = srv * C: symbols * http://msdl .microsoft. com/download/symbols
- DTrace автоматически загружает необходимые символы с сервера символов и кэширует их по локальному пути.
- Обратите внимание, что вам нужно будет отключить Secureboot и Bitlocker на C :, (если включено), если вы хотите настроить отладчик ядра.
Использование DTrace
- Откройте командную строку с повышенными привилегиями.
- Выполните одну из следующих команд:
# Сводка системных вызовов по программе за 5 секунд: dtrace -Fn "tick-5sec {exit (0);} syscall ::: entry {@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 syscal l ::: перечислит все зонды и их параметры, доступные от поставщика системных вызовов.
Ниже перечислены некоторые из поставщиков, доступных в Windows, и их инструменты.
- syscall – системные вызовы NTOS
- fbt (отслеживание границ функций) – ядро запись и возврат функции
- pid – трассировка процесса в пользовательском режиме. Подобно FBT в режиме ядра, но также позволяет инструментировать произвольные смещения функций.
- etw (трассировка событий для Windows) – позволяет определять зонды для ETW. Поставщик помогает использовать существующие инструменты операционной системы в DTrace.
- Это одно из дополнений, которое мы сделали для DTrace, чтобы позволить ему раскрывать и получать всю информацию, которую Windows уже предоставляет в ETW .
Больше примеров сценариев, применимых для сценариев Windows, можно найти в это каталог образцов .
Источник: Microsoft