Usando o MFTrace
O MFTrace é uma ferramenta para gerar logs de rastreamento para aplicativos do Microsoft Media Foundation.
O MFTrace usa a biblioteca Detours para conectar-se a chamadas à API do Media Foundation e gerar logs de rastreamento. O MFTrace também pode registrar rastreamentos de qualquer componente que use o ETW (Rastreamento de Eventos para Windows) ou o pré-processador de rastreamento de software (WPP) para gerar rastreamentos. Os logs de rastreamento podem ser gerados iniciando um novo processo do MFTrace ou anexando o MFTrace a um processo existente.
Uso
mftrace [-aProcess][-cConfigurationFile][-dc][-es][-kKeyWords][-lLevel][-oOutputFile][-v][-?] [{COMMAND|ETL_FILE}]
Argumentos de linha de comando | Descrição |
---|---|
-UmID do processo ou nome do processo |
Anexar a um processo em execução. |
-CArquivo de configuração |
Ler as configurações do arquivo de configuração especificado. Consulte Arquivo de Configuração do MFTrace. |
-Dc |
Desabilite o rastreamento para processos filho. Por padrão, o rastreamento é habilitado para processos filho. |
-Es |
Habilitar símbolos públicos. |
-KKeywords |
Uma lista separada por vírgulas de palavras-chave. Consulte Palavras-chave MFTrace. |
-LNível |
O nível de rastreamento.
|
-oArquivo de saída |
Escreva a saída de rastreamento no arquivo especificado. Por padrão, a saída vai para stdout. Se um arquivo de saída for especificado, a extensão de nome de arquivo deverá ser uma das seguintes:
|
-V |
Habilitar o modo detalhado. |
-? |
Exibir informações de uso. |
COMANDO |
Argumentos de linha de comando para criar um novo processo. |
ETL_FILE |
O nome de um arquivo ETL existente. Se esse argumento for fornecido, o arquivo ETL será convertido em saída de texto. |
Variáveis de ambiente
-
TRACE_FORMAT_SEARCH_PATH
-
Para rastrear componentes que usam o WPP (pré-processador de rastreamento de software) do Windows, defina essa variável de ambiente para especificar o caminho para os arquivos TMF (formato de mensagem de rastreamento) do componente.
-
_NT_SYMBOL_PATH
-
Se a pesquisa de símbolo estiver habilitada (-es), defina essa variável de ambiente para especificar o caminho do símbolo.
Exemplos
Crie um novo processo e rastreie esse processo:
mftrace.exe wmplayer.exe Wildlife.wmv
Anexe o MFTrace a um processo existente:
mftrace.exe -a wmplayer.exe
mftrace.exe -a 9132
Enviar saída de rastreamento para um arquivo de texto:
mftrace.exe -a wmplayer.exe -o trace.txt
Rastrear eventos ETW ou WPP:
mftrace.exe -c config.xml -o trace.txt
mftrace.exe -c config.xml -o trace.etl
Observação
O primeiro exemplo gera um arquivo de texto. O segundo exemplo gera um arquivo ETL.
Converter um arquivo ETL em um arquivo de texto:
mftrace.exe -o trace.txt trace.etl
Comentários
Por padrão, o MFTrace gera apenas rastreamentos de desvios. Para gerar rastreamentos ETW ou WPP, você deve fornecer um arquivo de configuração. O arquivo de configuração fornece os nomes dos provedores de rastreamento. Para obter mais informações, consulte Arquivo de Configuração do MFTrace.
O MFTrace pode enviar a saída para os seguintes destinos:
- stdout (o padrão).
- Um arquivo de texto.
- Um arquivo ETL binário.
Se você estiver registrando rastreamentos ETW/WPP, um arquivo ETL é a opção mais eficiente, pois os dados de rastreamento são salvos como blobs binários. Depois que a sessão de rastreamento for concluída, você poderá usar o MFTrace para converter o arquivo ETL em um arquivo de texto.
Observação
Para rastreamento de desvios, a saída de texto é tão eficiente quanto um arquivo ETL. Portanto, se você registrar somente rastreamentos de Desvios (sem rastreamentos ETW/WPP), a saída de texto será recomendada.
Para rastreamento de desvios, você deve anexar o MFTrace a um processo em execução (-a) ou usar o MFTrace para criar um novo processo. Para rastreamentos ETW/WPP, o MFTrace escuta qualquer provedor de eventos listado no arquivo de configuração.
Você pode filtrar os resultados do rastreamento especificando palavras-chave de rastreamento, por meio da opção de linha de comando -k ou no arquivo de configuração. O uso mais típico, no entanto, é registrar todos os rastreamentos e, em seguida, usar um script ou grep para pesquisar padrões de cadeia de caracteres específicos.
Interpretando os resultados do rastreamento
Você pode usar o MFTrace para responder a perguntas sobre o que acontece dentro de seu aplicativo ou componente do Media Foundation. A tabela a seguir lista algumas perguntas típicas. A segunda coluna fornece a cadeia de caracteres de pesquisa que pode ajudar a responder à pergunta.
Pergunta | Cadeias de caracteres de pesquisa |
---|---|
Ocorreu um erro? | "0xc00d" |
A topologia resolve corretamente? | "CTopologyHelpers::Trace" |
A Sessão de Mídia começou? | "MESessionStarted" |
Qual arquivo foi reproduzido? | "CMFSourceResolverDetours" |
Quais são os tipos de mídia para os fluxos de origem? | "Novo fluxo", "MENewStream", "CMFMediaSourceDetours::TracePD" |
Os fluxos de origem geraram amostras? | "CMFMediaStreamDetours::HandleEvent", "MEMediaSample" |
A reprodução chegou ao fim dos dados? | "MEEndOfStream", "MEEndOfPresentation" |
O formato mudou? | "MEStreamFormatChanged" (fontes de mídia), "Novo formato", "MESessionStreamSinkFormatChanged" (coletores de mídia) |
Quais objetos foram criados? | "COle32ExportDetours::CoCreateInstance" |
As MFTs (Transformações do Media Foundation) no pipeline processaram dados? | "CMFTransformDetours::P rocessOutput", "CMFTransformDetours::P rocessInput" |
Quais estados foram definidos nos MFTs? | "CMFTransformDetours::P rocessMessage" |
Um MFT solicitou dados de entrada? | "MF_E_TRANSFORM_NEED_MORE_INPUT" (MFT síncrono), "METransformNeedInput" (MFT assíncrono). |
Um MFT assíncrono produziu dados de saída? | "ProcessOutputs disponível" |
Um coletor de mídia solicitou exemplos? | "MEStreamSinkRequestSample" |
Um coletor de mídia recebeu amostras? | "CMFStreamSinkDetours::P rocessSample" |
DirectShow: quais amostras foram processadas? | "sample", "CMemInputPinDetours" |
DirectShow: qual grafo de filtro foi usado? | "CGraphHelpers::Trace" |
Havia vários processos? | Observação "CreateProcess ": procure também o identificador do processo, que aparece no início de cada linha de rastreamento. |
Tópicos relacionados
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de