Delen via


MFTrace gebruiken

MFTrace is een hulpprogramma voor het genereren van traceringslogboeken voor Microsoft Media Foundation-toepassingen.

MFTrace maakt gebruik van de Detours-bibliotheek om in te haken op API-aanroepen van Media Foundation en traceringslogboeken te genereren. MFTrace kan ook traceringen vastleggen van elk onderdeel dat gebruikmaakt van Event Tracing for Windows (ETW) of de software trace preprocessor (WPP) om traceringen te genereren. Traceerlogboeken kunnen worden gegenereerd door een nieuw proces te starten vanuit MFTrace of door MFTrace aan een bestaand proces te koppelen.

Gebruik

mftrace [-aProcess][-cConfigurationFile][-dc][-es][-es][ -kKeyWords][-lLevel][-oOutputFile][-v][-?] [{COMMAND|ETL_FILE}]

Opdrachtregelargumenten Beschrijving
-proces-id ofwel procesnaam
Koppelen aan een draaiend proces.
-cconfiguratiebestand
Lees instellingen uit het opgegeven configuratiebestand. Zie MFTrace-configuratiebestand.
-dc
Tracering uitschakelen voor subprocessen. Standaard is tracen ingeschakeld voor subprocessen.
-es
Openbare symbolen inschakelen.
-ktrefwoorden
Een door komma's gescheiden lijst met trefwoorden. Zie MFTrace-trefwoorden.
-lniveau
Het traceringsniveau.
  • 0: Geen
  • 1: Kritiek
  • 2: Fout
  • 3: Waarschuwing
  • 4: Informatief
  • 5: Uitgebreid
  • 16: Fouten opsporen
-ouitvoerbestand
Schrijf de traceringsuitvoer naar het opgegeven bestand. Standaard gaat de uitvoer naar stdout.
Als er een uitvoerbestand is opgegeven, moet de bestandsnaamextensie een van de volgende zijn:
  • .etl: ETL-bestand (Event Trace Log).
  • .log of .txt: tekstbestand.
-v
Schakel de uitgebreide modus in.
-?
Gebruiksgegevens weergeven.
COMMAND
Opdrachtregelargumenten om een nieuw proces te maken.
ETL_FILE
De naam van een bestaand ETL-bestand. Als dit argument wordt opgegeven, wordt het ETL-bestand geconverteerd naar tekstuitvoer.

 

Omgevingsvariabelen

TRACE_FORMAT_SEARCH_PATH

Als u onderdelen wilt traceren die gebruikmaken van de Windows-software trace preprocessor (WPP), stelt u deze omgevingsvariabele in op het opgeven van het pad naar de TMF-bestanden (Trace Message Format) voor het onderdeel.

_NT_SYMBOL_PATH

Als symboolzoekactie is ingeschakeld (-es), stelt u deze omgevingsvariabele in om het symboolpad op te geven.

Voorbeelden

Maak een nieuw proces en traceer dat proces:

mftrace.exe wmplayer.exe Wildlife.wmv

MFTrace koppelen aan een bestaand proces:

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

Traceringsuitvoer verzenden naar een tekstbestand:

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

ETW- of WPP-gebeurtenissen traceren:

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

Notitie

In het eerste voorbeeld wordt een tekstbestand gegenereerd. In het tweede voorbeeld wordt een ETL-bestand gegenereerd.

 

Een ETL-bestand converteren naar een tekstbestand:

mftrace.exe -o trace.txt trace.etl

Opmerkingen

Standaard genereert MFTrace alleen Detours-traceringen. Als u ETW- of WPP-traceringen wilt genereren, moet u een configuratiebestand opgeven. Het configuratiebestand geeft de namen van de traceringsproviders. Zie MFTrace-configuratiebestandvoor meer informatie.

MFTrace kan uitvoer verzenden naar de volgende bestemmingen:

  • stdout- (de standaardinstelling).
  • Een tekstbestand.
  • Een binair ETL-bestand.

Als u ETW/WPP-traceringen aanmeldt, is een ETL-bestand de meest efficiƫnte optie, omdat de traceringsgegevens worden opgeslagen als binaire blobs. Nadat de traceringssessie is voltooid, kunt u MFTrace gebruiken om het ETL-bestand te converteren naar een tekstbestand.

Notitie

Voor het traceren van Detours is tekstuitvoer net zo efficiƫnt als een ETL-bestand. Daarom wordt tekstuitvoer aanbevolen als u alleen Detours-traces (zonder ETW/WPP-traces) in het logboek opneemt.

 

Voor de tracering van Detours moet u MFTrace koppelen aan een draaiend proces (-a) of MFTrace gebruiken om een nieuw proces te maken. Voor ETW/WPP-traceringen luistert MFTrace naar iedere gebeurtenisprovider die wordt vermeld in het configuratiebestand.

U kunt de traceringsresultaten filteren door traceringstrefwoorden op te geven, hetzij via de -k opdrachtregeloptie of in het configuratiebestand. Het meest gangbare gebruik is echter om alle traceringen te registreren en vervolgens een script of grep- te gebruiken om te zoeken naar bepaalde tekenreekspatronen.

De traceringsresultaten interpreteren

U kunt MFTrace gebruiken om vragen te beantwoorden over wat er gebeurt in uw Media Foundation-toepassing of -onderdeel. De volgende tabel bevat enkele typische vragen. De tweede kolom geeft de zoekreeks die u kan helpen bij het beantwoorden van de vraag.

Vraag Zoekreeksen
Is er een fout opgetreden? "0xc00d"
Is de topologie correct opgelost? "CTopologyHelpers::Trace"
Is de mediasessie gestart? "MESessionStarted"
Welk bestand is afgespeeld? CMFSourceResolverDetours
Wat zijn de mediatypen voor de bronstreams? "Nieuwe stream", "MENewStream", "CMFMediaSourceDetours::TracePD"
Hebben de bronstreams voorbeelden gegenereerd? "CMFMediaStreamDetours::HandleEvent", "MEMediaSample"
Bereikte de weergave het einde van de gegevens? "MEEndOfStream", "MEEndOfPresentation"
Is de opmaak gewijzigd? "MEStreamFormatChanged" (mediabronnen), "Nieuwe indeling", "MESessionStreamSinkFormatChanged" (media sinks)
Welke objecten zijn gemaakt? COle32ExportDetours::CoCreateInstance
Hebben de Media Foundation-transformaties (MMFT's) in de pijplijn gegevens verwerkt? "CMFTransformDetours::ProcessOutput", "CMFTransformDetours::ProcessInput"
Welke statussen zijn ingesteld op de MMFT's? CMFTransformDetours::ProcessMessage
Heeft een MFT-voorstel om invoergegevens gevraagd? "MF_E_TRANSFORM_NEED_MORE_INPUT" (synchrone-MFT), "METransformNeedInput" (asynchrone-MFT).
Heeft een asynchrone MFT uitvoergegevens geproduceerd? ProcessUitgangen beschikbaar
Heeft een media-sink voorbeelden aangevraagd? "MEStreamSinkRequestSample"
Heeft een media-sink voorbeelden ontvangen? CMFStreamSinkDetours::ProcessSample
DirectShow: Welke voorbeelden zijn verwerkt? "sample", "CMemInputPinDetours"
DirectShow: Welke filtergrafiek is gebruikt? "CGraphHelpers::Trace"
Waren er meerdere processen? "CreateProcess" Opmerking: zoek ook naar de proces-id, die aan het begin van elke traceringslijn wordt weergegeven.

 

MFTrace