DTrace ist jetzt unter Windows verfügbar
Das nächste Windows 10-Funktionsupdate (19H1, April 2019 Update, Version 1903) wird DTrace, das beliebte Open-Source-Debugging- und Diagnosetool, unterstützen. Es wurde ursprünglich für Solaris entwickelt und wurde für Linux, FreeBSD, NetBSD und macOS verfügbar. Microsoft hat es auf Windows portiert.
DTrace ist ein dynamisches Tracing-Framework, das es einem Administrator oder Entwickler ermöglicht, einen Echtzeit-Einblick in ein System entweder im Benutzer- oder Kernelmodus zu erhalten. DTrace verfügt über eine leistungsstarke Programmiersprache im C-Stil, mit der Sie Trace-Punkte dynamisch einfügen können. Mithilfe dieser dynamisch eingefügten Ablaufverfolgungspunkte können Sie nach Bedingungen oder Fehlern filtern, Code zur Analyse von Sperrmustern schreiben, Deadlocks erkennen usw.
Unter Windows erweitert DTrace die Ereignisablaufverfolgung für Windows (ETW), die statisch ist und nicht die Möglichkeit bietet, Ablaufverfolgungspunkte zur Laufzeit programmgesteuert einzufügen.
Alle von dtrace.sys verwendeten APIs und Funktionen sind dokumentierte Aufrufe.
Microsoft hat einen speziellen Treiber für Windows 10 implementiert, der die Ausführung einer Reihe von Systemüberwachungsrollen ermöglicht. Der Treiber wird in Windows 10 Version 1903 enthalten sein. Außerdem erfordert DTrace derzeit, dass Windows mit einem aktivierten Kernel-Debugger gestartet wird.
Der Quellcode für das portierte DTrace-Tool ist auf GitHub verfügbar. Besuchen Sie die Seite „DTrace unter Windows“ unter dem OpenDTrace-Projekt auf GitHub, um es zu sehen.
DTrace in Windows 10 einrichten
Voraussetzungen für die Nutzung der Funktion
- Windows 10 Insider bauen 18342 oder höher
- Nur verfügbar auf x64 Windows und erfasst Ablaufverfolgungsinformationen nur für 64-Bit-Prozesse
-
Windows-Insider-Programm ist aktiviert und konfiguriert mit gültigem Windows-Insider-Konto.
- Besuchen Sie Einstellungen->Update & Sicherheit->Windows-Insider-Programm für Details
Anweisungen:
-
BCD-Konfigurationsset:
- bcdedit /set dtrace on
- Beachten Sie, dass Sie die Option bcdedit erneut festlegen müssen, wenn Sie auf einen neuen Insider-Build aktualisieren
-
Herunterladen und installieren Sie das DTrace-Paket von Download-Center.
- Dadurch werden die Benutzermoduskomponenten, Treiber und zusätzliche Feature-on-Demand-Pakete installiert, die für die Funktionsfähigkeit von DTrace erforderlich sind.
- Optional: Aktualisieren Sie die Umgebungsvariable PATH einschließen C:\Programme\DTrace
- set PATH=%PATH%;"C:\Programme\DTrace"
- Aufstellen Symbolpfad
- Erstellen Sie ein neues Verzeichnis zum lokalen Zwischenspeichern von Symbolen. Beispiel: mkdir c:\symbols
- Satz _NT_SYMBOL_PATH=srv*C:\Symbole*http://msdl.microsoft.com/download/symbols
- DTrace lädt automatisch die erforderlichen Symbole vom Symbolserver herunter und speichert sie in den lokalen Pfad.
-
Optional:Kernel-Debugger einrichten Verbindung zum Zielrechner (MSDN-Link). Das ist nur erforderlich, wenn Sie Kernel-Ereignisse mit FBT oder anderen Anbietern verfolgen möchten.
- Beachten Sie, dass Sie Secureboot und Bitlocker auf C: deaktivieren müssen (falls aktiviert), wenn Sie einen Kernel-Debugger einrichten möchten.
- Neustart Zielmaschine
Verwenden von DTrace
- Öffne ein erhöhte Eingabeaufforderung.
- Führen Sie einen der folgenden Befehle aus:
# Syscall-Zusammenfassung nach Programm für 5 Sekunden: dtrace -Fn "tick-5sec { exit (0);} syscallentry{ @num[pid, execname] = count();} " # Timer-Setzen/Programm abbrechen für 3. zusammenfassen Sekunden: dtrace -Fn "tick-3sec { exit (0);} syscall:: Nt*Timer*:entry { @[probefunc, execname, pid] = count();}" # Dump System Process Kernelstruktur: (erfordert Symbolpfad zu eingestellt werden) dtrace -n "BEGIN{print(*(struct nt`_EPROCESS *) nt`PsInitialSystemProcess);exit (0);}" # Tracing Pfade durch NTFS beim Ausführen von notepad.exe (erfordert KD a
Der Befehl dtrace -lvn syscall listet alle Sonden und ihre Parameter auf, die vom Systemrufanbieter verfügbar sind.
Im Folgenden sind einige der unter Windows verfügbaren Anbieter und ihre Instrumente aufgeführt.
- Systemaufruf – NTOS-Systemaufrufe
- fbt (Function Boundary Tracing) – Kernel-Funktionseintrag und Rückgabe
- pid – Prozessverfolgung im Benutzermodus. Wie FBT im Kernel-Modus, ermöglicht aber auch die Instrumentierung beliebiger Funktions-Offsets.
-
etw (Ereignisablaufverfolgung für Windows) – Ermöglicht die Definition von Probes für ETW Dieser Anbieter hilft dabei, vorhandene Betriebssysteminstrumentierung in DTrace zu nutzen.
- Dies ist eine Erweiterung von DTrace, um alle Informationen, die Windows bereits bereitstellt, verfügbar zu machen und zu erhalten ETW.
Weitere für Windows-Szenarien anwendbare Beispielskripte finden Sie hier Probenverzeichnis.
Quelle: Microsoft