DTrace sur Windows reçoit ses mises à jour 20H1 avec le support ARM64
DTrace est l'outil de débogage et de diagnostic open source populaire. Il a été conçu à l'origine pour Solaris et est devenu disponible pour Linux, FreeBSD, NetBSD et macOS. Microsoft l'a porté sur Windows et y ajoute une partie des mises à jour avec la mise à jour des fonctionnalités 20H1.
DTrace est un framework de traçage dynamique qui permet à un administrateur ou à un développeur d'avoir un aperçu en temps réel d'un système en mode utilisateur ou noyau. DTrace dispose d'un langage de programmation puissant et de haut niveau de style C qui vous permet d'insérer dynamiquement des points de trace. À l'aide de ces points de trace insérés dynamiquement, vous pouvez filtrer les conditions ou les erreurs, écrire du code pour analyser les modèles de verrouillage, détecter les interblocages, etc.
Sous Windows, DTrace étend le suivi des événements pour Windows (ETW) qui est statique et ne permet pas d'insérer par programme des points de trace au moment de l'exécution.
Toutes les API et fonctionnalités utilisées par dtrace.sys sont des appels documentés.
Microsoft a implémenté un pilote spécial pour Windows 10 qui permet d'effectuer un certain nombre de rôles de surveillance du système. Le pilote est intégré à Windows 10 à partir de la version 1903.
À partir de la version d'initié de Windows 10 19041.21, DTrace est livré avec les améliorations suivantes.
Aperçu ARM64
Oui c'est vrai! DTrace prend désormais en charge ARM64 en mode aperçu. L'ARM64 MSI est disponible dans le lien de téléchargement ci-dessus.
Vous pouvez l'utiliser sur votre Surface Pro X exécutant la dernière version de Windows 10 Insider Preview (20H1), en commençant par 19041.21.
Mode utilisateur Stackwalk
Dans l'aperçu, la fonction stackwalk de DTrace était limitée au mode Kernel (pile). Cette mise à jour ajoute la prise en charge de la fonction stackwalk en mode utilisateur (pile). Comme la pile, la fonction ustack est entièrement compatible avec la spécification DTrace open source. Il peut être invoqué de trois manières en spécifiant les cadres (profondeur) et la taille (ignorées pour l'instant) ou void.
- Ustack (nframes, taille)
- Ustack (nframes)
- Ustack()
Alors que ustack () peut déterminer l'adresse de la trame appelante lorsque la sonde se déclenche, les trames de pile seront pas être traduit en symboles tant que l'action ustack () n'est pas traitée en mode utilisateur par le consommateur DTrace. Le téléchargement de symboles peut ralentir la sortie. Par conséquent, il est préférable d'utiliser cette fonction avec des symboles mis en cache localement comme ci-dessous.
dtrace -n "profile-1ms /arg1/ {ustack (50, 0); exit (0);} " -y C:\symboles. dtrace: la description 'profile-1ms' correspond à 1 sonde. ID CPU FONCTION: NOM 0 3802 :profile-1ms ntdll`ZwAllocateVirtualMemory+0x14 ntdll`RtlAllocateHeap+0x3ded ntdll`RtlAllocateHeap+0x763 ucrtbase`malloc_base+0x44
Prise en charge du vidage en direct
Windows utilise généralement quelque chose appelé Décharge en direct pour aider à diagnostiquer rapidement les problèmes. Les dumps en direct aident à résoudre les problèmes impliquant plusieurs processus ou des problèmes à l'échelle du système sans temps d'arrêt. Dans 20H1, DTrace sous Windows peut être utilisé pour capturer un vidage en direct depuis un D-script à l'aide du lkd() Installation DTrace. Un cas d'utilisation courant de cette fonction consiste à instrumenter le chemin d'erreur (comme le code de retour indique une défaillance) et à capturer un vidage en direct au point de défaillance pour des diagnostics avancés. Pour plus d'informations sur la prise en charge du vidage en direct, consultez DTrace Live Dump.
dtrace -wn "syscallreturn { if (arg0 != 0xc0000001UL) { lkd (0); printf(\" Déclenchement du vidage en direct \n \");exit (0); }}" dtrace: la description 'syscallreturn' correspond à 1411 sondes. dtrace: permettant des actions destructrices. FONCTION D'ID CPU: NOM 0 181 NtDeviceIoControlFile: renvoie le dir de vidage en direct du déclenchement c:\Windows\LiveKernelReports Le volume dans le lecteur C n'a pas d'étiquette. Le numéro de série du volume est 70F4-B9F6 Répertoire de c:\Windows\LiveKernelReports 05/11/2019 17:20<DIR>. 11/05/2019 17:20 <DIR>.. 11/05/2019 17:19 <DIR> DTRACE. 05/11/2019 17:20 53 395 456 DTRACE-20191105-1720.dmp.
Traçage ETW
traçage ETW est l'outil le plus fréquemment utilisé pour le débogage sous Windows. Dans l'aperçu de DTrace sur Windows 19H1, nous avons ajouté la prise en charge de l'instrumentation des événements enregistrés et manifestés à l'aide du Fournisseur ETW.
En 20H1, nous avons encore amélioré cette fonctionnalité pour créer de nouveaux événements ETW à la volée à partir d'un script D à l'aide du ETW_Trace() établissement. Cela aide dans les situations où les événements ETW existants sont insuffisants et vous souhaitez ajouter des points de trace ETW supplémentaires sans modifier le code de production.
Pour plus d'informations sur ETW_Trace installation et fournisseur ETW, voir DTrace ETW.
/* Exécution de l'exemple de fournisseur GitHub ETW (lien ci-dessous) pour imprimer l'événement d'informations sur la mémoire du nœud. https://github.com/microsoft/DTrace-on-Windows/blob/master/samples/windows/etw/numamemstats.d. */ dtrace -qs numamemstats.d ID de partition: 0. Compte: 1. Numéro de nœud: 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 ÉnormeZeroPageCount = 0. }
Si vous êtes intéressé par l'installation de DTrace, découvrez comment cela peut être fait ici.
Vous pouvez télécharger le package DTrace MSI mis à jour d'ici.
le voici code source et scripts avancés.
La source