Dela via


DTrace

Från och med Windows Server 2025 dtrace ingår som ett inbyggt verktyg. DTrace är ett kommandoradsverktyg som gör det möjligt för användare att övervaka och felsöka sina systemprestanda i realtid. Med dtracekan användarna dynamiskt instrumentera kernel- och användarutrymmeskoden utan att ändra själva koden.

Det här kraftfulla verktyget stöder olika datainsamlings- och analystekniker, inklusive aggregeringar, histogram och spårning av händelser på användarnivå. Avsökningar kan anges i dtrace skript där skriptet definierar de avsökningar som ska övervakas och de åtgärder som ska vidtas när avsökningarna utlöses. En avsökning är en specifik punkt i koden där data kan samlas in för att utföra dessa åtgärder.

Anmärkning

Den här inbyggda porten skiljer dtrace sig från MSI-installationsprogrammet för DTrace för Windows omgivande parametrar och andra funktioner. Mer information om DTrace för Windows finns i DTrace i Windows.

En omfattande guide om hur du använder DTrace finns i guiden för dynamisk spårning.

Aktivera DTrace

Innan dtrace kan användas måste den först aktiveras. Om du vill aktivera dtraceöppnar du en upphöjd kommandotolk eller PowerShell som administratör och kör:

bcdedit /set dtrace on

En omstart krävs för att den här ändringen ska börja gälla.

Syntax

dtrace [-BCeFhlqSvVwYZ] [-b bufsz] [-c cmd] [-D name[=def]] [-I path]
[-L path] [-o output] [-p pid] [-s script] [-U name] [-x opt[=val]] [-X a|c|s|t]
[-y symbol path]

[-P provider [[ predicate ] action ]] [-m [ provider: ]
module [[ predicate ] action ]] [-f [[ provider: ] module: ]
func [[ predicate ] action ]] [-n [[[ provider: ] module: ] func: ]
name [[ predicate ] action ]] [-i probe-id [[ predicate ] action ]] [ args ... ]

Anmärkning

Parametrarna för dtrace.exe är skiftlägeskänsliga. Se till att använda rätt hölje när du anger parametrar för att undvika oväntade beteenden.

Parameter Beskrivning
-b <bufsz> Anger storleken på bufferten som används för att lagra spårningsdata, där bufsz är den önskade storleken på bufferten i byte, kilobyte (k), megabyte (m) eller gigabyte (g).
-c <cmd> Kör det angivna kommandot och avslutar när det har slutförts, där cmd är det kommando som du vill köra innan du startar spårningen. Om mer än en instans av -c används avslutas dtrace när alla kommandon har körts och rapporterar slutstatus för varje underordnad process.
-C Kör ucpp-förprocessorn på skriptfiler innan du kör spårningen.
-D <name>=<def> Definierar en symbol när du anropar förprocessorn, där namnet är namnet på symbolen som ska definieras, och def är ett valfritt värde att tilldela till symbolen.
-e Avslutas efter kompilering av en begäran men innan avsökningar aktiveras.
-f Aktiverar eller listar avsökningar som matchar det angivna funktionsnamnet.
-F Kombinerar spårningsutdata efter funktion, vilket gör det enklare att analysera.
-h Genererar en rubrikfil med definitioner för statiska avsökningar.
-Jag <probe-id> Aktiverar eller listar avsökningar som matchar det angivna avsöknings-ID:t, där avsöknings-ID är identifieraren för avsökningen som ska spåras.
-Jag <path> Lägger till den angivna katalogen i sökvägen för förprocessorn, där sökvägen är den katalog som du vill lägga till som innehåller #include-filerna .
-L Visar avsökningar som matchar angivna villkor baserat på parametrarna -P, -m, -f, -n, -i och -s . Om dessa parametrar inte anges visas alla avsökningar.
-L <path> Lägger till den angivna katalogen i sökvägen till biblioteket, där sökvägen är den bibliotekskatalog som du vill lägga till som innehåller vanliga definitioner.
-m Aktiverar eller listar avsökningar som matchar det angivna modulnamnet i ett argument med hjälp av formatprovidern:modulen eller modulen. Om kvalificerare inte anges förutom modulnamnet matchas alla avsökningar med det modulnamnet.
-n Aktiverar eller listar avsökningar som matchar det angivna avsökningsnamnet i ett argument med hjälp av formatprovidern:module:function:name, module:function:name, function:name eller name. Om kvalificerare inte anges förutom avsökningsnamnet matchas alla avsökningar med det namnet.
-o <output> Anger utdatafilen för spårningsdata, där utdata är namnet på den fil som du vill använda för spårningsdata.
-p <pid> Hämtar angivet process-ID (PID) och cachelagrar dess symboltabeller, som kan användas för att analysera programmets beteende.
-P <provider> Aktiverar eller listar avsökningar som matchar det angivna providernamnet, där providern är namnet på providern. Fler än en instans av parametern -P kan användas samtidigt.
-q Anger tyst läge, som endast matar ut explicit spårade data.
-s <script> Aktiverar eller listar avsökningar enligt det angivna D-skriptet, där skriptet är namnet på skriptet som du vill köra. Om -e anges kompileras programmet men ingen datainsamling utförs. Om -l anges kompileras programmet och listan över matchade avsökningar visas, men ingen datainsamling utförs. Om -e eller -l inte anges kompileras programmet, datainsamlingen utförs enligt de angivna avsökningarna och spårningen börjar.
-S Skriver ut D-language-kompilatorns mellanliggande kod för felsökning till stderr.
-U <name> Odefinierar en symbol när du anropar förprocessorn, där namnet är namnet på den symbol som du vill odefiniera.
-v Anger utförligt läge, som rapporterar stabilitetsattribut och argument.
-V Visar versionen av dtrace-API:et.
-w Tillåter destruktiva åtgärder när de anges med parametrarna -s, -P, -m, -f, -n eller -i . Destruktiva åtgärder kan omfatta åtgärder som att ändra kernelvariabler, ändra beteendet för systemanrop eller krascha systemet.
-x <opt>=<val> Aktiverar eller ändrar kompilator- och spårningsalternativen, där opt är namnet på det alternativ som du vill aktivera eller ändra och val är ett valfritt värde.
-X <a|c|s|t> Styr hur strikt C-koden som kompileras följer ISO C-standarden när cpp anropas. De tillgängliga argumenten är:
  • -Xa (standard): tillhandahåller ISO C plus K&R-kompatibilitetstillägg med semantiska ändringar som krävs av ISO C. Det fördefinierade makrot __STDC__ har värdet 0 när cpp anropas.
  • -Xc (efterlevnad): Ger en strikt överensstämmelse med ISO C utan K&R C-kompatibilitetstillägg. Det fördefinierade makrot __STDC__ har värdet 1 när cpp anropas.
  • -Xs (K&R C): Tillhandahåller endast K&R C och __STDC__ makrot definieras inte när cpp anropas.
  • -Xt (övergång): Tillhandahåller ISO C plus K&R C-kompatibilitetstillägg utan semantiska ändringar som krävs av ISO C. Det fördefinierade makrot __STDC__ har värdet 0 när cpp anropas.
-y <symbol path> Anger sökvägen för symbolsökningen för dtrace-skriptet som ska matchas, där symbolsökvägen är sökvägen till det delade biblioteket eller katalogen som innehåller symbolerna. Mer information finns i Symbolsökvägar.
-Y Använder standardsökvägen för symbolsökning för dtrace-skriptet.
-Z Tillåter avsökningsbeskrivningar som matchar noll avsökningar för felsökning.

I följande lista beskrivs de återstående beskrivningarna:

  • Predikat: Predikatet omges av snedstreck (/ /) och är ett D-uttryck, som är ett booleskt uttryck som kan referera till variabler, konstanter och funktioner. Predikat kan användas för att filtrera utdata dtrace från baserat på dessa händelser. Det här uttrycket utvärderas varje gång en avsökning utlöses. Om predikatet utvärderas till sant körs den associerade åtgärden.

  • Åtgärd: Åtgärden omges av klammerparenteser ({ }) och är en uppsättning D-språkinstruktioner som körs när en avsökning utlöses och dess associerade predikat utvärderas till sant. Åtgärder kan användas för att skriva ut utdatainstruktioner, registrera data eller utföra andra åtgärder, till exempel att skicka en signal eller ändra en variabel.

  • Modul: En komponent i en provider som innehåller en uppsättning relaterade avsökningar. Moduler kan anges i dtrace skript för att begränsa skriptets omfång till en specifik modul eller uppsättning moduler.

  • Func: Ett funktionsnamn som är associerat med en avsökning. Avsökningen syscall::NtReadFile är till exempel associerad med read funktionen. Funktioner kan anges i dtrace skript för att begränsa skriptets omfång till en specifik funktion eller uppsättning funktioner.

  • Args: Argumenten som skickas till åtgärdsuttrycket när en avsökning utlöses och dess associerade predikat utvärderas till sant. Args kan användas för att samla in data från avsökningskontexten, till exempel värden för funktionsargument eller returvärden för systemanrop. Args kan också användas för att skicka data mellan avsökningar eller för att ändra skriptets beteende.

Exempel

Om du vill spåra alla systemanrop skriver du ut namnet på den körbara filen och namnet på systemanropet som görs genom att köra:

dtrace -n 'syscall:::entry { printf("%s called syscall %s", execname, probefunc); }'

Det här kommandot spårar funktionen "function_name" i processen med angiven PID och skriver ut namnet på funktionen, PID för processen som anropar den och namnet på den körbara filen.

dtrace -n 'pid$target::function_name:entry { printf("Function %s called by process %d (%s)", probefunc, pid, execname); }' -p <PID>

Fler exempel på hur du använder dtracefinns i Komma igång med DTrace – enradskommandon.

Se även