Utiliser MFTrace
MFTrace est un outil permettant de générer des journaux de suivi pour les applications Microsoft Media Foundation.
MFTrace utilise la bibliothèque Detours pour s'accrocher aux appels API de Media Foundation et générer des journaux de suivi. MFTrace peut également enregistrer des traces à partir de n'importe quel composant qui utilise Event Tracing for Windows (ETW) ou le préprocesseur de traces logicielles (WPP) pour générer des traces. Les journaux de traces peuvent être générés en démarrant un nouveau processus à partir de MFTrace, ou en attachant MFTrace à un processus existant.
Utilisation
mftrace [-a Process][-c ConfigurationFile][-dc][-es][-k KeyWords][-l Level][-o OutputFile][-v][-?] [{COMMAND|ETL_FILE}]
Arguments de ligne de commande | Description |
---|---|
-aID ou nom du processus |
Attacher à un processus en cours d’exécution. |
-cFichier de configuration |
Lire les paramètres du fichier de configuration spécifié. Voir Fichier de configuration de MFTrace. |
-dc |
Désactiver le traçage pour les processus enfants. Par défaut, le traçage est activé pour les processus enfants. |
-es |
Activer les symboles publics. |
-kMots clés |
Une liste de mots-clés séparés par des virgules. Voir les mots-clés de MFTrace. |
-lNiveau |
Niveau de trace.
|
-oFichier de sortie |
Écrire la sortie de la trace dans le fichier spécifié. Par défaut, la sortie se fait sur stdout. Si un fichier de sortie est spécifié, l'extension du nom de fichier doit être l'une des suivantes :
|
-v |
Activez le mode détaillé. |
-? |
Affichez des informations sur l’utilisation. |
COMMAND |
Arguments de la ligne de commande pour créer un nouveau processus. |
ETL_FILE |
Le nom d'un fichier ETL existant. Si cet argument est fourni, le fichier ETL est converti en sortie texte. |
Variables d'environnement
-
TRACE_FORMAT_SEARCH_PATH
-
Pour suivre les composants qui utilisent le préprocesseur de suivi logiciel Windows (WPP), définissez cette variable d'environnement pour spécifier le chemin d'accès aux fichiers de format de message de suivi (TMF) pour le composant.
-
_NT_SYMBOL_PATH
-
Si la recherche de symboles est activée (-es), définissez cette variable d'environnement pour spécifier le chemin d'accès aux symboles.
Exemples
Créez un nouveau processus et tracez ce processus :
mftrace.exe wmplayer.exe Wildlife.wmv
Attachez MFTrace à un processus existant :
mftrace.exe -a wmplayer.exe
mftrace.exe -a 9132
Envoyer la sortie de la trace dans un fichier texte :
mftrace.exe -a wmplayer.exe -o trace.txt
Tracer les événements ETW ou WPP :
mftrace.exe -c config.xml -o trace.txt
mftrace.exe -c config.xml -o trace.etl
Remarque
Le premier exemple génère un fichier texte. Le deuxième exemple génère un fichier ETL.
Convertissez un fichier ETL en fichier texte :
mftrace.exe -o trace.txt trace.etl
Notes
Par défaut, MFTrace ne génère que des traces Detours. Pour générer des traces ETW ou WPP, vous devez fournir un fichier de configuration. Le fichier de configuration indique les noms des fournisseurs de traces. Pour plus d'informations, voir Fichier de configuration de MFTrace.
MFTrace peut envoyer la sortie vers les destinations suivantes :
- stdout (par défaut).
- Un fichier texte.
- Un fichier ETL binaire.
Si vous journalisez des traces ETW/WPP, un fichier ETL est l'option la plus efficace, car les données de trace sont enregistrées sous forme de blobs binaires. Une fois la session de traçage terminée, vous pouvez utiliser MFTrace pour convertir le fichier ETL en fichier texte.
Remarque
Pour le traçage de Detours, la sortie texte est tout aussi efficace qu'un fichier ETL. Par conséquent, si vous ne journalisez que les traces Detours (sans traces ETW/WPP), la sortie texte est recommandée.
Pour les traces Detours, vous devez attacher MFTrace à un processus en cours d'exécution (-a) ou utiliser MFTrace pour créer un nouveau processus. Pour les traces ETW/WPP, MFTrace écoute tous les fournisseurs d'événements listés dans le fichier de configuration.
Vous pouvez filtrer les résultats des traces en spécifiant des mots-clés de trace, soit par l'option de ligne de commande -k, soit dans le fichier de configuration. L'utilisation la plus courante, cependant, est de journaliser toutes les traces, puis d'utiliser un script ou grep pour rechercher des chaînes de caractères particulières.
Interprétation des résultats des traces
Vous pouvez utiliser MFTrace pour répondre à des questions sur ce qui se passe à l'intérieur de votre application ou composant Media Foundation. Le tableau suivant répertorie quelques questions typiques. La deuxième colonne indique la chaîne de recherche qui peut aider à répondre à la question.
Question | Chaînes de recherche |
---|---|
Une erreur s'est-elle produite ? | "0xc00d" |
La topologie a-t-elle été résolue correctement ? | "CTopologyHelpers::Trace" |
La session média a-t-elle démarré ? | "MESessionStarted" |
Quel fichier a été lu ? | "CMFSourceResolverDetours" |
Quels sont les types de médias pour les flux source ? | "New stream", "MENewStream", "CMFMediaSourceDetours::TracePD" |
Les flux source ont-ils généré des échantillons ? | "CMFMediaStreamDetours::HandleEvent", "MEMediaSample" |
La lecture a-t-elle atteint la fin des données ? | "MEEndOfStream", "MEEndOfPresentation" |
Le format a-t-il changé ? | "MEStreamFormatChanged" (sources médiatiques), "New format", "MESessionStreamSinkFormatChanged" (récepteurs de médias) |
Quels objets ont été créés ? | "COle32ExportDetours::CoCreateInstance" |
Les Media Foundation Transforms (MFT) du pipeline ont-ils traité des données ? | "CMFTransformDetours::ProcessOutput", "CMFTransformDetours::ProcessInput" |
Quels états ont été définis sur les MFT ? | "CMFTransformDetours::ProcessMessage" |
Une FFCP a-t-elle demandé des données en entrée ? | "MF_E_TRANSFORM_NEED_MORE_INPUT" (MFT synchrone), "METransformNeedInput" (asynchronous MFT). |
Une MFT asynchrone a-t-elle produit des données de sortie ? | "ProcessOutputs available" |
Un récepteur a-t-il demandé des échantillons ? | "MEStreamSinkRequestSample" |
Un récepteur a-t-il reçu des échantillons ? | "CMFStreamSinkDetours::ProcessSample" |
DirectShow : Quels échantillons ont été traités ? | "sample", "CMemInputPinDetours" |
DirectShow : Quel graphique de filtrage a été utilisé ? | "CGraphHelpers::Trace" |
Y a-t-il eu plusieurs processus ? | "CreateProcess" Remarque : recherchez également l'identifiant du processus, qui apparaît au début de chaque ligne de trace. |
Rubriques connexes