Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
DTrace prend en charge le langage de programmation D. Cette rubrique explique comment commencer à écrire et utiliser des scripts DTrace.
Pour obtenir des informations générales sur DTrace sur Windows, consultez DTrace.
Pour plus d’informations sur DTrace, consultez la version 1.0 de la spécification OpenDTrace à l’Université de Cambridge.
Remarque
DTrace est pris en charge dans les builds Insider de Windows après la version 18980 et Windows Server build 18975.
Exemples de scripts supplémentaires
Des scripts D supplémentaires applicables aux scénarios Windows sont disponibles dans le répertoire d’exemples du code source DTrace.
https://github.com/microsoft/DTrace-on-Windows/tree/windows/samples/windows
Un ensemble de scripts de boîte à outils opentrace est disponible à l’adresse https://github.com/opendtrace/toolkit.
Salut tout le monde
Les scripts DTrace sont des fichiers texte simples qui contiennent des commandes et des éléments de script de programmation D.
dtrace:::BEGIN
{
trace("Hello World from DTrace!");
exit(0);
}
Enregistrez le fichier sous helloworld.d.
Ouvrez une fenêtre d’invite de commandes en tant qu’administrateur et exécutez le script à l’aide de l’option -s.
dtrace -s helloworld.d
dtrace: script '.\helloworld.d' matched 1 probe
CPU ID FUNCTION:NAME
0 1 :BEGIN Hello World from DTrace!
Temps d'exécution pour NtCreateUserProcess
Vous pouvez créer des scripts DTrace pour suivre le temps nécessaire à plusieurs fonctions/événements. Voici un exemple simple qui suit la fonction NtCreateUserProcess entre entrée/retour pour le processus de création.
syscall::NtCreateUserProcess:entry
{
self->ts = timestamp;
}
syscall::NtCreateUserProcess:return
{
printf(" [Caller %s]: Time taken to return from create process is %d MicroSecond \n", execname, (timestamp - self->ts)/ 1000);
}
Enregistrez le fichier en tant que ntcreatetime.d et utilisez l’option -s pour exécuter le script de test.
C:\Windows\system32>dtrace -s ntcreatetime.d
dtrace: script 'ntcreatetime.d' matched 2 probes
CPU ID FUNCTION:NAME
0 183 NtCreateUserProcess:return [Caller svchost.exe]: Time taken to return from create process is 51191 MicroSecond
0 183 NtCreateUserProcess:return [Caller SearchIndexer.]: Time taken to return from create process is 84418 MicroSecond
0 183 NtCreateUserProcess:return [Caller SearchIndexer.]: Time taken to return from create process is 137961 MicroSecond
Suivi des suppressions de fichiers
Cet exemple de script utilise le fournisseur d'appels système pour instrumenter NtOpenFile à l'entrée et vérifie l'indicateur transmis (argument n°5) pour suivre les opérations de suppression dans le système.
Copiez le script ci-dessous dans filedeletetracker.d.
ERROR{exit(0);}
struct ustr{uint16_t buffer[256];};
syscall::NtOpenFile:entry
{
this->deleted = arg5 & 0x00001000; /* & with FILE_DELETE_ON_CLOSE */
if (this->deleted) {
this->attr = (nt`_OBJECT_ATTRIBUTES*)
copyin(arg2, sizeof(nt`_OBJECT_ATTRIBUTES));
if (this->attr->ObjectName) {
this->objectName = (nt`_UNICODE_STRING*)
copyin((uintptr_t)this->attr->ObjectName,
sizeof(nt`_UNICODE_STRING));
this->fname = (uint16_t*)
copyin((uintptr_t)this->objectName->Buffer,
this->objectName->Length);
printf("Process %s PID %d deleted file %*ws \n", execname,pid,
this->objectName->Length / 2,
((struct ustr*)this->fname)->buffer);
}
}
}
Utilisez l’option -s pour exécuter le script de test.
Créez ou recherchez un fichier que vous souhaitez supprimer. Déplacez le fichier vers la Corbeille, puis videz la Corbeille. Lorsque le fichier est supprimé et que l’événement se déclenche et que les informations relatives à la suppression du fichier sont affichées.
C:\Windows\system32>dtrace -s filedeletetracker.d
dtrace: script 'filedeletetracker.d' matched 8 probes
CPU ID FUNCTION:NAME
0 512 NtOpenFile:entry Process explorer.exe PID 4684 deleted file \??\C:\$Recycle.Bin\S-1-12-1-3310478672-1302480547-4207937687-2985363607\$ROSR3FA.txt
Ce programme est conçu pour continuer à surveiller les suppressions de fichiers. Appuyez sur Ctrl+C pour quitter.
Pour obtenir d’autres exemples de code plus volumineux, consultez la rubrique suivante, exemples de code Windows DTrace.