Verwenden von MFTrace

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

MFTrace verwendet die Detours-Bibliothek, um Media Foundation API-Aufrufe zu verknüpfen und Ablaufverfolgungsprotokolle zu generieren. MFTrace kann auch Ablaufverfolgungen von jeder Komponente aufzeichnen, die die Ereignisablaufverfolgung für Windows (ETW) oder den Software trace preprocessor (WPP) zum Generieren von Ablaufverfolgungen verwendet. Ablaufverfolgungsprotokolle können durch Starten eines neuen Prozesses aus MFTrace oder durch Anfügen von MFTrace an einen vorhandenen Prozess generiert werden.

Verwendung

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

Befehlszeilenargumente BESCHREIBUNG
-a Prozess-ID oder Prozessname
Anfügen an einen laufenden Prozess.
-c Konfigurationsdatei
Liest Einstellungen aus der angegebenen Konfigurationsdatei. Siehe MFTrace-Konfigurationsdatei.
-dc
Deaktivieren Sie die Ablaufverfolgung für untergeordnete Prozesse. Standardmäßig ist die Ablaufverfolgung für untergeordnete Prozesse aktiviert.
-es
Aktivieren Sie öffentliche Symbole.
-k Schlüsselwörter
Eine durch Kommas getrennte Liste von Schlüsselwörtern. Siehe MFTrace-Schlüsselwörter.
-l Ebene
Die Ablaufverfolgungsebene.
  • 0: Keine
  • 1: Kritisch
  • 2: Fehler
  • 3: Warnung
  • 4: Informativ
  • 5: Ausführlich
  • 16: Debuggen
-o Ausgabedatei
Schreiben Sie die Ablaufverfolgungsausgabe in die angegebene Datei. Standardmäßig wird die Ausgabe an stdout ausgegeben.
Wenn eine Ausgabedatei angegeben wird, muss die Dateinamenerweiterung eine der folgenden Sein:
  • .etl: ETL-Datei (Ereignisablaufverfolgungsprotokoll).
  • .log oder .txt: Textdatei.
-v
Aktivieren Sie den ausführlichen Modus.
-?
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 zu verfolgen, die den Windows Software Trace Preprocessor (WPP) verwenden, legen Sie diese Umgebungsvariable auf fest, um den Pfad zu den TMF-Dateien (Trace Message Format) für die Komponente anzugeben.

_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

Fügen Sie MFTrace an einen vorhandenen Prozess an:

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

Senden der Ablaufverfolgungsausgabe an eine Textdatei:

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

Verfolgen Sie ETW- oder WPP-Ereignisse:

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

Bemerkungen

MfTrace generiert standardmäßig nur Ablaufverfolgungen für Umleitungen. 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 (Standardeinstellung).
  • Eine Textdatei.
  • Eine binäre ETL-Datei.

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

Hinweis

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

Für die Ablaufverfolgung von Umleitungen müssen Sie MFTrace an einen laufenden Prozess (-a) anfügen oder MFTrace verwenden, um einen neuen Prozess zu erstellen. Bei ETW-/WPP-Ablaufverfolgungen lauscht MFTrace an jedem Ereignisanbieter, der in der Konfigurationsdatei aufgeführt ist.

Sie können die Ablaufverfolgungsergebnisse filtern, indem Sie Ablaufverfolgungsschlüsselwö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

Sie können MFTrace verwenden, um Fragen dazu zu beantworten, was in Ihrer Media Foundation Anwendung oder Komponente geschieht. In der folgenden Tabelle sind einige typische Fragen aufgeführt. Die zweite Spalte enthält die Suchzeichenfolge, 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? "Neuer Stream", "MENewStream", "CMFMediaSourceDetours::TracePD"
Haben die Quellstreams Beispiele generiert? "CMFMediaStreamDetours::HandleEvent", "MEMediaSample"
Hat die Wiedergabe das Ende der Daten erreicht? "MEEndOfStream", "MEEndOfPresentation"
Hat sich das Format geändert? "MEStreamFormatChanged" (Medienquellen), "Neues Format", "MESessionStreamSinkFormatChanged" (Mediensenken)
Welche Objekte wurden erstellt? "COle32ExportDetours::CoCreateInstance"
Haben die Media Foundation Transforms (MFTs) in der Pipeline Daten verarbeitet? "CMFTransformDetours::P rocessOutput", "CMFTransformDetours::P rocessInput"
Welche Zustände wurden für die MFTs festgelegt? "CMFTransformDetours::P rocessMessage"
Hat ein MFT Eingabedaten angefordert? "MF_E_TRANSFORM_NEED_MORE_INPUT" (synchrones MFT), "METransformNeedInput" (asynchrones MFT).
Hat ein asynchroner MFT Ausgabedaten erzeugt? "ProcessOutputs verfügbar"
Hat eine Mediensenke Beispiele angefordert? "MEStreamSinkRequestSample"
Hat eine Mediensenke Beispiele erhalten? "CMFStreamSinkDetours::P rocessSample"
DirectShow: Welche Beispiele wurden verarbeitet? "sample", "CMemInputPinDetours"
DirectShow: Welches Filterdiagramm wurde verwendet? "CGraphHelpers::Trace"
Gab es mehrere Prozesse? "CreateProcess"
[!Note]
Suchen Sie auch nach dem Prozessbezeichner, der am Anfang jeder Ablaufverfolgungszeile angezeigt wird.


Mftrace