Использование MFTrace
MFTrace — это средство для создания журналов трассировки для приложений Microsoft Media Foundation.
MFTrace использует библиотеку Detours для перехвата вызовов API Media Foundation и создания журналов трассировки. MFTrace также может записывать трассировки из любого компонента, использующего трассировку событий для Windows (ETW) или препроцессор трассировки программного обеспечения (WPP) для создания трассировок. Журналы трассировки можно создать путем запуска нового процесса из MFTrace или подключения MFTrace к существующему процессу.
mftrace [-a Process][-c ConfigurationFile][-dc][-es][-k KeyWords][-l Level][-o OutputFile][-v][-v][-?] [{COMMAND|ETL_FILE}]
Аргументы командной строки | Description |
---|---|
-идентификаторпроцесса или имя процесса |
Присоединение к выполняемому процессу. |
Файл конфигурации -c |
Чтение параметров из указанного файла конфигурации. См . файл конфигурации MFTrace. |
-постоянный ток |
Отключите трассировку для дочерних процессов. По умолчанию трассировка включена для дочерних процессов. |
-es |
Включите открытые символы. |
Ключевые слова -k |
Разделенный запятыми список ключевых слов. См . ключевые слова MFTrace. |
-lУровень |
Уровень трассировки.
|
Выходной файл -o |
Запишите выходные данные трассировки в указанный файл. По умолчанию выходные данные переходит к stdout. Если указан выходной файл, расширение имени файла должно быть одним из следующих:
|
-v |
Включите подробный режим. |
-? |
Отображает сведения об использовании. |
КОМАНДА |
Аргументы командной строки для создания нового процесса. |
ETL_FILE |
Имя существующего файла ETL. Если этот аргумент указан, файл ETL преобразуется в текстовые выходные данные. |
-
TRACE_FORMAT_SEARCH_PATH
-
Чтобы отследить компоненты, использующие препроцессор трассировки программного обеспечения Windows (WPP), задайте для этой переменной среды путь к файлам формата сообщения трассировки (TMF) для компонента.
-
_NT_SYMBOL_PATH
-
Если подстановка символов включена (-es), задайте эту переменную среды, чтобы указать путь к символам.
Создайте новый процесс и трассировку этого процесса:
mftrace.exe wmplayer.exe Wildlife.wmv
Подключите MFTrace к существующему процессу:
mftrace.exe -a wmplayer.exe
mftrace.exe -a 9132
Отправка выходных данных трассировки в текстовый файл:
mftrace.exe -a wmplayer.exe -o trace.txt
Трассировка событий ETW или WPP:
mftrace.exe -c config.xml -o trace.txt
mftrace.exe -c config.xml -o trace.etl
Примечание
Первый пример создает текстовый файл. Второй пример создает ETL-файл.
Преобразование ETL-файла в текстовый файл:
mftrace.exe -o trace.txt trace.etl
По умолчанию MFTrace создает только трассировки detours. Чтобы создать трассировки ETW или WPP, необходимо предоставить файл конфигурации. Файл конфигурации предоставляет имена поставщиков трассировки. Дополнительные сведения см. в файле конфигурации MFTrace.
MFTrace может отправлять выходные данные в следующие назначения:
- stdout (по умолчанию).
- Текстовый файл.
- Двоичный ETL-файл.
Если вы регистрируете трассировки ETW/WPP, ETL-файл является наиболее эффективным вариантом, так как данные трассировки сохраняются в виде двоичных BLOB-объектов. После завершения сеанса трассировки можно использовать MFTrace для преобразования файла ETL в текстовый файл.
Примечание
Для трассировки detours выходные данные текста так же эффективны, как файл ETL. Поэтому, если вы регистрируете только трассировки detours (без трассировок ETW/WPP), рекомендуется вывод текста.
Для трассировки detours необходимо подключить MFTrace к работающему процессу (-a) или использовать MFTrace для создания нового процесса. Для трассировок ETW/WPP MFTrace прослушивает любой поставщик событий, указанный в файле конфигурации.
Результаты трассировки можно отфильтровать, указав ключевые слова трассировки либо с помощью параметра командной строки -k , либо в файле конфигурации. Однако более типичное использование заключается в том, чтобы регистрировать все трассировки, а затем использовать скрипт или grep для поиска определенных шаблонов строк.
С помощью MFTrace можно ответить на вопросы о том, что происходит в приложении Или компоненте Media Foundation. В следующей таблице перечислены некоторые типичные вопросы. Второй столбец предоставляет строку поиска, которая может помочь ответить на вопрос.
Вопрос | Строки поиска |
---|---|
Произошла ошибка? | "0xc00d" |
Правильно ли разрешена топология? | "CTopologyHelpers::Trace" |
Начал ли сеанс мультимедиа? | "MESessionStarted" |
Какой файл был воспроизведен? | "CMFSourceResolverDetours" |
Каковы типы носителей для исходных потоков? | "Новый поток", "MENewStream", "CMFMediaSourceDetours::TracePD" |
Создаются ли исходные потоки примеры? | "CMFMediaStreamDetours::HandleEvent", "MEMediaSample" |
Достигло ли воспроизведение конца данных? | "MEEndOfStream", "MEEndOfPresentation" |
Изменился ли формат? | "MEStreamFormatChanged" (источники мультимедиа), "Новый формат", "MESessionStreamSinkFormatChanged" (приемники мультимедиа) |
Какие объекты были созданы? | "COle32ExportDetours::CoCreateInstance" |
Преобразовывает ли Media Foundation (MFT) в конвейере любые данные? | "CMFTransformDetours::P rocessOutput", "CMFTransformDetours::P rocessInput" |
Какие состояния были установлены на MFTs? | "CMFTransformDetours::P rocessMessage" |
Запрашивали ли входные данные MFT? | "MF_E_TRANSFORM_NEED_MORE_INPUT" (синхронный MFT), "METransformNeedInput" (асинхронный MFT). |
Создает ли асинхронный MFT выходные данные? | "Доступно ProcessOutputs" |
Запросы приемника мультимедиа? | "MEStreamSinkRequestSample" |
Получили ли приемник мультимедиа образцы? | "CMFStreamSinkDetours::P rocessSample" |
DirectShow: Какие образцы были обработаны? | "sample", "CMemInputPinDetours" |
DirectShow: Какой граф фильтров использовался? | "CGraphHelpers::Trace" |
Были ли несколько процессов? | Примечание CreateProcess . Также найдите идентификатор процесса, который отображается в начале каждой строки трассировки. |