Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ab Windows Server 2025 dtrace
ist als integriertes Tool enthalten. DTrace ist ein Befehlszeilenprogramm, mit dem Benutzer ihre Systemleistung in Echtzeit überwachen und debuggen können. Benutzer dtrace
können den Kernel- und Benutzerraumcode dynamisch instrumentieren, ohne den Code selbst zu ändern.
Dieses leistungsstarke Tool unterstützt verschiedene Datenerfassungs- und Analysetechniken, einschließlich Aggregationen, Histogramme und Ablaufverfolgung von Ereignissen auf Benutzerebene. Probes können in Skripts angegeben werden, in dtrace
denen das Skript die zu überwachenden Probes definiert, und die Aktionen, die ausgeführt werden sollen, wenn die Probe ausgelöst wird. Ein Prüfpunkt ist ein bestimmter Punkt im Code, an dem Daten gesammelt werden können, um diese Aktionen auszuführen.
Hinweis
Dieser integrierte Port dtrace
unterscheidet sich vom MSI-Installationsprogramm von DTrace für Windows umgebende Parameter und andere Funktionen. Weitere Informationen zu DTrace für Windows finden Sie unter DTrace unter Windows.
Eine umfassende Anleitung zur Verwendung von DTrace finden Sie im Leitfaden zur dynamischen Ablaufverfolgung.
DTrace aktivieren
Bevor dtrace
sie verwendet werden kann, muss sie zuerst aktiviert werden. Um dies zu aktivieren dtrace
, öffnen Sie eine Eingabeaufforderung mit erhöhten Rechten oder PowerShell als Administrator, und führen Sie Folgendes aus:
bcdedit /set dtrace on
Ein Neustart ist erforderlich, damit diese Änderung wirksam wird.
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 ... ]
Hinweis
Bei den Parametern für dtrace.exe wird zwischen Groß- und Kleinschreibung unterschieden. Stellen Sie sicher, dass Sie beim Angeben von Parametern die richtige Groß-/Kleinschreibung verwenden, um unerwartetes Verhalten zu vermeiden.
Parameter | BESCHREIBUNG |
---|---|
-b <bufsz> |
Legt die Größe des Puffers fest, der zum Speichern von Ablaufverfolgungsdaten verwendet wird, wobei bufsz die gewünschte Größe des Puffers in Bytes, Kilobyte (k), Megabyte (m) oder Gigabyte (g) ist. |
-c <cmd> |
Führt den angegebenen Befehl aus und beendet ihn nach Abschluss, wobei cmd der Befehl ist, den Sie ausführen möchten, bevor Sie die Ablaufverfolgung starten. Wenn mehr als eine Instanz von -c verwendet wird, beendet dtrace, wenn die Ausführung aller Befehle abgeschlossen ist, und meldet den Beendigungsstatus für jeden untergeordneten Prozess. |
-C | Führt den ucpp-Vorprozessor auf Skriptdateien aus, bevor die Ablaufverfolgung ausgeführt wird. |
-D <name> =<def> |
Definiert ein Symbol beim Aufrufen des Präprozessors, wobei name der Name des zu definierenden Symbols ist, und def ist ein optionaler Wert, der dem Symbol zugewiesen werden soll. |
-e | Beendet nach dem Kompilieren einer Anforderung, aber vor dem Aktivieren von Probes. |
f- | Aktiviert oder listet Prüfpunkte auf, die dem angegebenen Funktionsnamen entsprechen. |
-F | Kombiniert die Ablaufverfolgungsausgabe nach Funktion und erleichtert die Analyse. |
-h | Generiert eine Headerdatei mit Definitionen für statische Probes. |
-Ich <probe-id> |
Aktiviert oder listet Probes auf, die mit der angegebenen Probe-ID übereinstimmen, wobei die Probe-ID der Bezeichner für den Prüfpunkt ist, der nachverfolgt werden soll. |
-Ich <path> |
Fügt das angegebene Verzeichnis dem Präprozessorsuchpfad hinzu, wobei Pfad das Verzeichnis ist, das Sie hinzufügen möchten, das die #include Dateien enthält. |
-l | Listet Prüfpunkte auf, die angegebenen Kriterien basierend auf den Parametern -P, -m, -f, -n, -i und -s entsprechen. Wenn diese Parameter nicht angegeben sind, werden alle Probes aufgelistet. |
-L <path> |
Fügt das angegebene Verzeichnis dem Bibliothekssuchpfad hinzu. Dabei handelt es sich dabei um das Bibliotheksverzeichnis, das Sie hinzufügen möchten, das allgemeine Definitionen enthält. |
-m | Aktiviert oder listet Prüfpunkte auf, die dem angegebenen Modulnamen in einem Argument mit dem Format provider:module oder module entsprechen. Wenn Qualifizierer nicht neben dem Modulnamen angegeben werden, werden alle Probes mit diesem Modulnamen übereinstimmen. |
-n | Aktiviert oder listet Probes, die dem angegebenen Probenamen in einem Argument entsprechen, mithilfe des Formatanbieters:module:function:name, module:function:name, function:name oder name. Wenn Qualifizierer nicht neben dem Probenamen angegeben werden, werden alle Probes mit diesem Namen übereinstimmen. |
-o <output> |
Legt die Ausgabedatei für die Ablaufverfolgungsdaten fest, wobei die Ausgabe der Name der Datei ist, die Sie für die Ablaufverfolgungsdaten verwenden möchten. |
-p <pid> |
Greift die angegebene Prozess-ID (PID) ab und speichert die Symboltabellen zwischen, mit denen das Verhalten des Programms analysiert werden kann. |
-P <provider> |
Aktiviert oder listet Prüfpunkte auf, die dem angegebenen Anbieternamen entsprechen, wobei der Anbieter der Name des Anbieters ist. Mehrere Instanzen des Parameters "-P " können gleichzeitig verwendet werden. |
-q | Legt den stillen Modus fest, der nur explizit nachverfolgte Daten ausgibt. |
-s <script> |
Aktiviert oder listet Prüfpunkte gemäß dem angegebenen D-Skript auf, wobei Skript der Name des Skripts ist, das Sie ausführen möchten. Wenn -e angegeben ist, wird das Programm kompiliert, aber keine Datensammlung ausgeführt. Wenn -l angegeben ist, wird das Programm kompiliert, und die Liste der gefundenen Probes wird angezeigt, es wird jedoch keine Datensammlung ausgeführt. Wenn -e oder -l nicht angegeben sind, wird das Programm kompiliert, die Datensammlung erfolgt entsprechend den angegebenen Prüfern, und die Ablaufverfolgung beginnt. |
-S | Druckt den D-Language-Compiler-Zwischencode zum Debuggen in Stderr. |
-U <name> |
Rückgängigmachen eines Symbols beim Aufrufen des Präprozessors, wobei der Name der Name des Symbols ist, das Sie rückgängig machen möchten. |
-v | Legt ausführlichen Modus fest, der Stabilitätsattribute und Argumente meldet. |
-V | Zeigt die Version der dtrace-API an. |
-w | Ermöglicht destruktive Aktionen, wenn sie mit den Parametern -s, -P, -m, -f, -n oder -i angegeben werden. Destruktive Aktionen können Aktionen wie das Ändern von Kernelvariablen, das Ändern des Verhaltens von Systemaufrufen oder das Absturzen des Systems umfassen. |
-x <opt> =<val> |
Aktiviert oder ändert die Compiler- und Ablaufverfolgungsoptionen, wobei die Option der Name der Option ist, die Sie aktivieren oder ändern möchten, und val ist ein optionaler Wert. |
-X <a|c|s|t> |
Steuert, wie streng der kompilierte C-Code beim Aufrufen des Cpp dem ISO C-Standard entspricht. Die verfügbaren Argumente sind:
|
-y <symbol path> |
Legt den Suchpfad für das Dtrace-Skript fest, das aufgelöst werden soll, wobei der Symbolpfad der Pfad zu der freigegebenen Bibliothek oder dem Verzeichnis ist, das die Symbole enthält. Weitere Informationen finden Sie unter Symbolpfade. |
-Y | Verwendet den Standardmäßigen Symbolsuchpfad für das Dtrace-Skript. |
-Z | Ermöglicht Probebeschreibungen, die mit Nullsonden für das Debuggen übereinstimmen. |
In der folgenden Liste werden die verbleibenden Beschreibungen beschrieben:
Prädikat: Das Prädikat wird in Schrägstriche (
/ /
) eingeschlossen und ist ein D-Ausdruck, bei dem es sich um einen booleschen Ausdruck handelt, der auf Variablen, Konstanten und Funktionen verweisen kann. Prädikate können verwendet werden, um die Ausgabedtrace
basierend auf diesen Ereignissen zu filtern. Dieser Ausdruck wird jedes Mal ausgewertet, wenn eine Probe ausgelöst wird. Wenn das Prädikat als wahr ausgewertet wird, wird die zugeordnete Aktion ausgeführt.Aktion: Die Aktion ist in geschweifte geschweifte Klammern (
{ }
) eingeschlossen und ist eine Reihe von D-Sprachanweisungen, die ausgeführt werden, wenn eine Probe ausgelöst wird, und das zugehörige Prädikat (falls vorhanden) als wahr ausgewertet wird. Aktionen können verwendet werden, um Ausgabeanweisungen zu drucken, Daten aufzuzeichnen oder andere Vorgänge auszuführen, z. B. das Senden eines Signals oder das Ändern einer Variablen.Modul: Eine Komponente eines Anbieters, die einen Satz verwandter Probes enthält. Module können in
dtrace
Skripts angegeben werden, um den Umfang des Skripts auf ein bestimmtes Modul oder eine Gruppe von Modulen zu beschränken.Func: Ein Funktionsname, der einer Probe zugeordnet ist. Der Prüfpunkt ist beispielsweise
syscall::NtReadFile
derread
Funktion zugeordnet. Funktionen können indtrace
Skripts angegeben werden, um den Umfang des Skripts auf eine bestimmte Funktion oder einen Satz von Funktionen zu beschränken.Args: Die Argumente, die an den Aktionsausdruck übergeben werden, wenn ein Prüfpunkt ausgelöst wird, und das zugehörige Prädikat (sofern vorhanden), wird als "true" ausgewertet. Args können verwendet werden, um Daten aus dem Prüfpunktkontext zu erfassen, z. B. die Werte von Funktionsargumenten oder Rückgabewerte des Systemaufrufs. Args können auch verwendet werden, um Daten zwischen Probes zu übergeben oder das Verhalten des Skripts zu ändern.
Beispiele
Führen Sie zum Nachverfolgen aller Systemaufrufe den Namen der ausführbaren Datei und den Namen des ausgeführten Systemaufrufs aus:
dtrace -n 'syscall:::entry { printf("%s called syscall %s", execname, probefunc); }'
Dieser Befehl verfolgt die Funktion "function_name" im Prozess mit der angegebenen PID und druckt den Namen der Funktion, die PID des Prozesses, der sie aufruft, und den Namen der ausführbaren Datei.
dtrace -n 'pid$target::function_name:entry { printf("Function %s called by process %d (%s)", probefunc, pid, execname); }' -p <PID>
Weitere Beispiele zur Verwendung dtrace
finden Sie unter "Erste Schritte mit DTrace – EinZeilbefehle".