Freigeben über


Verwenden von MFTrace

MFTrace ist ein Tool zum Generieren von Ablaufverfolgungsprotokollen für Microsoft Media Foundation-Anwendungen.

MFTrace verwendet die Detours-Bibliothek, um in API-Aufrufe von Media Foundation einzugreifen und Ablaufverfolgungsprotokolle zu generieren. MFTrace kann außerdem Ablaufverfolgungen von allen Komponenten aufzeichnen, die Event Tracing for Windows (ETW) oder den Software Trace Preprocessor (WPP) zum Generieren von Ablaufverfolgungen verwenden. Ablaufverfolgungsprotokolle können durch Starten eines neuen Prozesses von MFTrace oder durch Anfügen von MFTrace an einen vorhandenen Prozess generiert werden.

Verbrauch

mftrace [-a Process][-c ConfigurationFile][-dc][-es][-k KeyWords][-l Level][-o OutputFile][-v][-?] [{COMMAND|ETL_FILE}]

Befehlszeilenargumente Beschreibung
-aProzess-ID oder Prozessname
Anfügen an einen laufenden Prozess.
-cKonfigurationsdatei
Lesen der Einstellungen aus der angegebenen Konfigurationsdatei. Siehe MFTrace-Konfigurationsdatei.
-dc
Deaktivieren der Ablaufverfolgung für untergeordnete Prozesse. Standardmäßig ist die Ablaufverfolgung für untergeordnete Prozesse aktiviert.
-es
Aktivieren der öffentlichen Symbole.
-kSchlüsselwörter
Eine durch Kommas getrennte Liste von Schlüsselwörtern. Siehe MFTrace-Schlüsselwörter.
-lEbene
Die Ablaufverfolgungsebene.
  • 0: Keine
  • 1: Kritisch
  • 2: Fehler
  • 3: Warnung
  • 4: Informativ
  • 5: Ausführlich
  • 16: Debug
-oAusgabedatei
Schreibt die Ausgabe der Ablaufverfolgung in die angegebene Datei. Standardmäßig wird die Ausgabe an stdout gesendet.
Wenn eine Ausgabedatei angegeben wird, muss die Dateinamenerweiterung eine der folgenden sein:
  • .etl: ETL-Datei (Event Trace Log).
  • .log oder .txt: Textdatei.
-v
Ausführlichen Modus aktivieren.
-?
Zeigt Nutzungsinformationen an.
BEFEHL
Befehlszeilenargumente zum Erstellen eines neuen Prozesses.
ETL_FILE
Der Name einer vorhandenen ETL-Datei. Wenn dieses Argument angegeben wird, wird die ETL-Datei in die Textausgabe konvertiert.

 

Umgebungsvariablen

TRACE_FORMAT_SEARCH_PATH

Um Komponenten nachzuverfolgen, die den Windows Software Trace Preprocessor (WPP) verwenden, legen Sie diese Umgebungsvariable auf den Pfad zu den TMF-Dateien (Trace Message Format) für die Komponente fest.

_NT_SYMBOL_PATH

Wenn die Symbolsuche aktiviert ist (-es), legen Sie diese Umgebungsvariable fest, um den Symbolpfad anzugeben.

Beispiele

Erstellen Sie einen neuen Prozess, und verfolgen Sie diesen Prozess:

mftrace.exe wmplayer.exe Wildlife.wmv

Anfügen von MFTrace an einen vorhandenen Prozess:

mftrace.exe -a wmplayer.exe
mftrace.exe -a 9132

Senden der Ablaufverfolgungsausgabe an eine Textdatei:

mftrace.exe -a wmplayer.exe -o trace.txt

Nachverfolgen von ETW- oder WPP-Ereignissen:

mftrace.exe -c config.xml -o trace.txt
mftrace.exe -c config.xml -o trace.etl

Hinweis

Im ersten Beispiel wird eine Textdatei generiert. Im zweiten Beispiel wird eine ETL-Datei generiert.

 

Konvertieren einer ETL-Datei in eine Textdatei:

mftrace.exe -o trace.txt trace.etl

Hinweise

Standardmäßig generiert MFTrace nur Detours-Ablaufverfolgungen. Um ETW- oder WPP-Ablaufverfolgungen zu generieren, müssen Sie eine Konfigurationsdatei bereitstellen. Die Konfigurationsdatei gibt die Namen der Ablaufverfolgungsanbieter an. Weitere Informationen finden Sie unter MFTrace-Konfigurationsdatei.

MFTrace kann die Ausgabe an die folgenden Ziele senden:

  • stdout (Standard).
  • Eine Textdatei.
  • Eine binäre ETL-Datei.

Wenn Sie ETW/WPP-Ablaufverfolgungen protokollieren, ist eine ETL-Datei die effizienteste Option, da die Daten der Ablaufverfolgung als binäre Blobs gespeichert werden. Nachdem die Ablaufverfolgungssitzung abgeschlossen ist, können Sie MFTrace verwenden, um die ETL-Datei in eine Textdatei zu konvertieren.

Hinweis

Bei der Detours-Ablaufverfolgung ist die Textausgabe genauso effizient wie eine ETL-Datei. Wenn Sie daher nur Detours-Ablaufverfolgungen protokollieren (ohne ETW/WPP-Ablaufverfolgungen), wird die Textausgabe empfohlen.

 

Für die Detours-Ablaufverfolgung müssen Sie MFTrace an einen ausgeführten Prozess (-a) anfügen oder MFTrace verwenden, um einen neuen Prozess zu erstellen. Bei ETW/WPP-Ablaufverfolgungen überwacht MFTrace alle Ereignisanbieter, die in der Konfigurationsdatei aufgeführt sind.

Sie können die Ablaufverfolgungsergebnisse filtern, indem Sie Ablaufverfolgungsstichwörter angeben, entweder über die Befehlszeilenoption -k oder in der Konfigurationsdatei. Die typischere Verwendung besteht jedoch darin, alle Ablaufverfolgungen zu protokollieren und dann ein Skript oder grep zu verwenden, um nach bestimmten Zeichenfolgenmustern zu suchen.

Interpretieren der Ablaufverfolgungsergebnisse

Mit MFTrace können Sie Fragen dazu beantworten, was in Ihrer Media Foundation-Anwendung oder -Komponente passiert. In der folgenden Tabelle sind einige typische Fragen aufgeführt. In der zweiten Spalte wird die Suchzeichenfolge angezeigt, mit der die Frage beantwortet werden kann.

Frage Suchzeichenfolgen
Ist ein Fehler aufgetreten? "0xc00d"
Wurde die Topologie ordnungsgemäß aufgelöst? "CTopologyHelpers::Trace"
Wurde die Mediensitzung gestartet? "MESessionStarted"
Welche Datei wurde wiedergegeben? "CMFSourceResolverDetours"
Was sind die Medientypen für die Quellstreams? "New stream", "MENewStream", "CMFMediaSourceDetours::TracePD"
Haben die Quellstreams Samples generiert? "CMFMediaStreamDetours::HandleEvent", "MEMediaSample"
Hat die Wiedergabe das Ende der Daten erreicht? "MEEndOfStream", "MEEndOfPresentation"
Hat sich das Format geändert? "MEStreamFormatChanged" (Medienquellen), "New format", "MESessionStreamSinkFormatChanged" (Mediensenken)
Welche Objekte wurden erstellt? "COle32ExportDetours::CoCreateInstance"
Haben die Media Foundation Transforms (MFTs) in der Pipeline Daten verarbeitet? "CMFTransformDetours::ProcessOutput", "CMFTransformDetours::ProcessInput"
Welche Zustände wurden für die MFTs festgelegt? "CMFTransformDetours::ProcessMessage"
Hat eine MFT Eingabedaten angefordert? "MF_E_TRANSFORM_NEED_MORE_INPUT" (synchroner MFT), "METransformNeedInput" (asynchrone MFT).
Hat ein asynchroner MFT Ausgabedaten erzeugt? "ProcessOutputs available"
Hat eine Mediensenke Samples angefordert? "MEStreamSinkRequestSample"
Hat eine Mediensenke Samples erhalten? "CMFStreamSinkDetours::ProcessSample"
DirectShow: Welche Samples wurden verarbeitet? "sample", "CMemInputPinDetours"
DirectShow: Welches Filterdiagramm wurde verwendet? "CGraphHelpers::Trace"
Gab es mehrere Prozesse? "CreateProcess" Hinweis: Achten Sie außerdem auf die Prozesskennung, die am Anfang jeder Ablaufverfolgungszeile steht.

 

MFTrace