Windows Tips & News

DTrace на Windows отримує оновлення 20H1 з підтримкою ARM64

DTrace — популярний інструмент для налагодження та діагностики з відкритим кодом. Спочатку він був створений для Solaris і став доступним для Linux, FreeBSD, NetBSD і macOS. Корпорація Майкрософт перенесла його на 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 була обмежена режимом ядра (стеком). Це оновлення додає підтримку функції Stackwalk в режимі користувача (ustack). Як і стек, засіб ustack повністю сумісний зі специфікацією DTrace з відкритим кодом. Його можна викликати трьома способами, вказавши рамки (глибину) і розмір (наразі ігнорувати) або void.

  • Ustack (nframes, розмір)
  • Ustack (nframes)
  • Ustack()

У той час як ustack () може визначати адресу викликаючого кадру, коли спрацьовує зонд, фрейми стека будуть не буде перекладено на символи, доки дія ustack () не буде оброблено в режимі користувача споживачем DTrace. Завантаження символу може уповільнити вихід. Отже, краще використовувати цей засіб із локально кешованими символами, як показано нижче.

dtrace -n "profile-1ms /arg1/ {ustack (50, 0); вихід (0);} " -y C:\symbols. dtrace: опис 'profile-1ms' відповідає 1 пробі. ІД ЦП ФУНКЦІЯ: НАЗВА 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc44

Жива підтримка дампів

Windows зазвичай використовує те, що називається Живий смітник щоб допомогти швидко діагностувати проблеми. Живі дампи допомагають усунути проблеми, пов’язані з кількома процесами, або проблемами в системі без простоїв. У 20H1 DTrace у Windows можна використовувати для захоплення дампу в реальному часі зсередини D-скрипту за допомогою lkd() Засіб DTrace. Поширеним випадком використання цього засобу є інструментування шляху помилки (наприклад, код повернення вказує на збій) і захоплення живого дампу прямо в точці відмови для розширеної діагностики. Додаткову інформацію про підтримку дампу в реальному часі див DTrace Live Dump.

dtrace -wn "syscallreturn { якщо (arg0 != 0xc0000001UL) { lkd (0); printf(\" Запуск дампу в реальному часі \n \");exit (0); }}" dtrace: опис 'syscallreturn' відповідає 1411 пробам. dtrace: дозволяє виконувати деструктивні дії. ІД ЦП ФУНКЦІЯ: НАЗВА 0 181 NtDeviceIoControlFile: повернення Запуск Live dump dir 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. 

Трасування ETW

Трасування ETW є найбільш часто використовуваним інструментом для налагодження в Windows. У попередньому перегляді DTrace у Windows 19H1 ми додали підтримку інструментування відстежених і виявлених подій за допомогою Постачальник ETW.

У 20H1 ми ще більше вдосконалили цю можливість для створення нових подій ETW на льоту з D-скрипту за допомогою ETW_Trace() об'єкта. Це допомагає в ситуаціях, коли наявних подій ETW недостатньо, і ви хочете додати додаткові точки трасування ETW, не змінюючи виробничий код.

Для отримання додаткової інформації про 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 Ідентифікатор розділу: 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, подивіться, як це можна зробити тут.

Ви можете завантажити оновлений пакет DTrace MSI звідси.

Ось воно вихідний код і розширені скрипти.

Джерело

Edge PWA незабаром матимуть розширені рядки заголовка

Edge PWA незабаром матимуть розширені рядки заголовка

Microsoft збирається усунути візуальну різницю між рядками заголовків Edge PWA та іншими програма...

Читати далі

Windows 10 Build 21364 дозволяє запускати програми з графічним інтерфейсом Linux

Windows 10 Build 21364 дозволяє запускати програми з графічним інтерфейсом Linux

РЕКОМЕНДУЄМО: Натисніть тут, щоб вирішити проблеми з Windows та оптимізувати продуктивність систе...

Читати далі

Понад 1,3 мільярда пристроїв працюють під керуванням Windows 10

Понад 1,3 мільярда пристроїв працюють під керуванням Windows 10

РЕКОМЕНДУЄМО: Натисніть тут, щоб вирішити проблеми з Windows та оптимізувати продуктивність систе...

Читати далі