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.
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 dtrace
kan 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:
|
-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 utdatadtrace
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 medread
funktionen. Funktioner kan anges idtrace
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 dtrace
finns i Komma igång med DTrace – enradskommandon.