Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
DTrace stöder D-programmeringsspråket. Det här avsnittet beskriver hur du kommer igång med att skriva och använda DTrace-skript.
Allmän information om DTrace i Windows finns i DTrace.
Detaljerad information om DTrace finns i OpenDTrace Specification version 1.0 vid University Of Cambridge.
Anmärkning
DTrace stöds i Insider-versionerna av Windows efter version 18980 och Windows Server build 18975.
Ytterligare exempelskript
Ytterligare D-skript som gäller för Windows-scenarier finns i exempelkatalogen för DTrace-källkoden.
https://github.com/microsoft/DTrace-on-Windows/tree/windows/samples/windows
En uppsättning opentrace toolkit-skript finns på https://github.com/opendtrace/toolkit.
Hej världen
DTrace-skript är enkla textfiler som innehåller kommandon och D-programmeringsskriptelement.
dtrace:::BEGIN
{
  trace("Hello World from DTrace!");
  exit(0);
}
Spara filen som helloworld.d.
Öppna ett kommandotolksfönster som administratör och kör skriptet med hjälp av alternativet -s.
dtrace -s helloworld.d
dtrace: script '.\helloworld.d' matched 1 probe
CPU     ID                    FUNCTION:NAME
  0      1                           :BEGIN   Hello World from DTrace!
Returtid för NtCreateUserProcess
Du kan skapa DTrace-skript för att spåra tidsåtgången för flera funktioner/händelser. Nedan visas ett enkelt exempel som spårar funktionen NtCreateUserProcess mellan post/retur för skapandeprocessen.
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);
}
Spara filen som ntcreatetime.d och använd alternativet -s för att köra testskriptet.
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
Spårare för filborttagning
Det här exempelskriptet använder syscall-providern för att instrumentera NtOpenFile vid inmatning och söker efter flagga som skickats (argument nr 5) för att spåra borttagningar i systemet.
Kopiera skriptet nedan till 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);
        }
    }
}
Använd alternativet -s för att köra testskriptet.
Skapa eller leta upp en fil som du vill ta bort. Flytta filen till papperskorgen och töm papperskorgen. När filen tas bort kommer en händelse att triggas och information om filborttagningen visas.
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
Det här programmet är utformat för att fortsätta övervaka filborttagningar. Tryck på CTRL+C för att avsluta.
Ytterligare större kodexempel finns i nästa avsnitt , DTrace Windows Code Samples.