DTrace ahora está disponible en Windows
La próxima actualización de funciones de Windows 10 (19H1, actualización de abril de 2019, versión 1903) incluirá soporte para DTrace, la popular herramienta de diagnóstico y depuración de código abierto. Originalmente se creó para Solaris y estuvo disponible para Linux, FreeBSD, NetBSD y macOS. Microsoft lo ha portado a Windows.
Anuncio publicitario
DTrace es un marco de seguimiento dinámico que permite a un administrador o desarrollador obtener una vista en tiempo real de un sistema, ya sea en modo de usuario o de kernel. DTrace tiene un lenguaje de programación potente y de alto nivel estilo C que le permite insertar puntos de seguimiento de forma dinámica. Con estos puntos de seguimiento insertados dinámicamente, puede filtrar por condiciones o errores, escribir código para analizar patrones de bloqueo, detectar puntos muertos, etc.
En Windows, DTrace amplía el seguimiento de eventos para Windows (ETW), que es estático y no ofrece la capacidad de insertar puntos de seguimiento mediante programación en tiempo de ejecución.
Todas las API y las funciones utilizadas por dtrace.sys son llamadas documentadas.
Microsoft ha implementado un controlador especial para Windows 10 que permite realizar una serie de funciones de supervisión del sistema. El controlador se incluirá con Windows 10 versión 1903. Además, DTrace actualmente requiere que Windows se inicie con un depurador de kernel habilitado.
El código fuente de la herramienta DTrace portada está disponible en GitHub. Visite la página "DTrace en Windows”En el proyecto OpenDTrace en GitHub para verlo.
Configurar DTrace en Windows 10
Requisitos previos para usar la función
- Información privilegiada de Windows 10 compilación 18342 o mas alto
- Solo disponible en x64 Windows y captura información de seguimiento solo para procesos de 64 bits
-
Programa Windows Insider es activado y configurado con una cuenta de Windows Insider válida
- Visite Configuración-> Actualización y seguridad-> Programa Windows Insider para obtener más detalles
Instrucciones:
-
Conjunto de configuración BCD:
- bcdedit / establecer dtrace en
- Tenga en cuenta que debe configurar la opción bcdedit nuevamente, si actualiza a una nueva compilación de Insider
-
Descargar e instale el paquete DTrace desde Centro de descargas.
- Esto instala los componentes del modo de usuario, los controladores y los paquetes de funciones adicionales bajo demanda necesarios para que DTrace sea funcional.
- Opcional: actualice el Variable de entorno PATH para incluir C: \ Archivos de programa \ DTrace
- set PATH =% PATH%; "C: \ Archivos de programa \ DTrace"
- Configuración ruta de símbolo
- Cree un nuevo directorio para almacenar en caché los símbolos localmente. Ejemplo: mkdir c: \ symbols
- Colocar _NT_SYMBOL_PATH= srv * C: \ símbolos *http://msdl.microsoft.com/download/symbols
- DTrace descarga automáticamente los símbolos necesarios del servidor de símbolos y los almacena en la ruta local.
-
Opcional:Configurar el depurador del kernel conexión a la máquina de destino (Enlace de MSDN). Este es solamente requerido si desea rastrear eventos del Kernel usando FBT u otros proveedores.
- Tenga en cuenta que deberá deshabilitar Secureboot y Bitlocker en C:, (si está habilitado), si desea configurar un depurador del kernel.
- Reiniciar máquina de destino
Uso de DTrace
- Abra un símbolo del sistema elevado.
- Ejecute uno de los siguientes comandos:
# Resumen de syscall por programa durante 5 segundos: dtrace -Fn "tick-5sec {exit (0);} syscallentry {@num [pid, execname] = count ();}" # Resumir el temporizador establecido / cancelar programa para 3 segundos: dtrace -Fn "tick-3sec {exit (0);} syscall:: Nt * Timer *: entry {@ [probefunc, execname, pid] = count ();}" # Dump System Process estructura del kernel: (requiere ruta de símbolo a ser configurado) dtrace -n "BEGIN {print (* (struct nt`_EPROCESS *) nt`PsInitialSystemProcess); exit (0);}" # Trazar rutas a través de NTFS cuando se ejecuta notepad.exe (requiere KD a
El comando dtrace -lvn syscall enumerará todas las sondas y sus parámetros disponibles en el proveedor de syscall.
Los siguientes son algunos de los proveedores disponibles en Windows y sus instrumentos.
- syscall - Llamadas al sistema NTOS
- fbt (Seguimiento de límites de función): entrada y devolución de funciones del núcleo
- pid - Seguimiento de procesos en modo usuario. Como FBT en modo kernel, pero también permite la instrumentación de compensaciones de funciones arbitrarias.
-
etw (Seguimiento de eventos para Windows): permite definir sondeos para ETW. Este proveedor ayuda a aprovechar la instrumentación del sistema operativo existente en DTrace.
- Esta es una adición que hemos hecho a DTrace para permitirle exponer y obtener toda la información que Windows ya proporciona en ETW.
Se pueden encontrar más scripts de muestra aplicables para escenarios de Windows en este directorio de muestras.
Fuente: Microsoft