Udostępnij przez


Korzystanie z narzędzia MFTrace

MFTrace to narzędzie do generowania dzienników śledzenia dla aplikacji Microsoft Media Foundation.

Narzędzie MFTrace wykorzystuje bibliotekę Detours do przechwytywania wywołań API Media Foundation i generowania dzienników śledzenia. Narzędzie MFTrace może również rejestrować ślady z dowolnego składnika, który używa funkcji śledzenia zdarzeń dla systemu Windows (ETW) lub preprocesora śledzenia oprogramowania (WPP) do generowania śladów. Dzienniki śledzenia można wygenerować, uruchamiając nowy proces z programu MFTrace lub dołączając MFTrace do istniejącego procesu.

Użytkowanie

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

Argumenty wiersza polecenia Opis
— identyfikator procesulub nazwa procesu
Dołącz do uruchomionego procesu.
-cplik konfiguracji
Odczyt ustawień z określonego pliku konfiguracji. Zobacz plik konfiguracyjny MFTrace.
-dc
Wyłącz śledzenie procesów podrzędnych. Domyślnie śledzenie jest włączone dla procesów podrzędnych.
-es
Włącz symbole publiczne.
słowa kluczowe
Rozdzielona przecinkami lista słów kluczowych. Zobacz słowa kluczowe MFTrace.
-lpoziomu
Poziom śledzenia.
  • 0: Brak
  • 1: Krytyczne
  • 2: Błąd
  • 3: Ostrzeżenie
  • 4. Informacyjny
  • 5: Pełne
  • 16: Debugowanie
-oplik wyjściowy
Zapisz wynik śledzenia do określonego pliku. Domyślnie dane wyjściowe trafiają do stdout.
Jeśli określono plik wyjściowy, rozszerzenie nazwy pliku musi być jednym z następujących elementów:
  • .etl: plik dziennika śledzenia zdarzeń (ETL).
  • .log lub .txt: plik tekstowy.
-v
Włącz tryb pełny.
-?
Wyświetl informacje o użyciu.
COMMAND
Argumenty wiersza polecenia umożliwiające utworzenie nowego procesu.
ETL_FILE
Nazwa istniejącego pliku ETL. Jeśli ten argument zostanie podany, plik ETL zostanie przekonwertowany na dane wyjściowe tekstowe.

 

Zmienne środowiskowe

TRACE_FORMAT_SEARCH_PATH

Aby śledzić składniki korzystające z preprocesora śledzenia oprogramowania systemu Windows (WPP), ustaw tę zmienną środowiskową, aby określić ścieżkę do plików formatu komunikatów śledzenia (TMF) dla składnika.

_NT_SYMBOL_PATH

Jeśli wyszukiwanie symboli jest włączone (-es), ustaw tę zmienną środowiskową, aby określić ścieżkę symboli.

Przykłady

Utwórz nowy proces i prześledzić ten proces:

mftrace.exe wmplayer.exe Wildlife.wmv

Dołącz MFTrace do istniejącego procesu:

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

Wysyłanie danych wyjściowych śledzenia do pliku tekstowego:

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

Śledzenie zdarzeń ETW lub WPP:

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

Notatka

Pierwszy przykład generuje plik tekstowy. Drugi przykład generuje plik ETL.

 

Przekonwertuj plik ETL na plik tekstowy:

mftrace.exe -o trace.txt trace.etl

Uwagi

Domyślnie MFTrace generuje tylko ślady Detours. Aby wygenerować ślady ETW lub WPP, należy podać plik konfiguracji. Plik konfiguracji zawiera nazwy dostawców śledzenia. Aby uzyskać więcej informacji, zobacz plik konfiguracji MFTrace .

MFTrace może wysyłać dane wyjściowe do następujących miejsc docelowych:

  • stdout (ustawienie domyślne).
  • Plik tekstowy.
  • Binarny plik ETL.

Jeśli rejestrujesz śledzenie ETW/WPP, plik ETL jest najwydajniejszą opcją, ponieważ dane śledzenia są zapisywane binarnie jako blob. Po zakończeniu sesji śledzenia możesz użyć narzędzia MFTrace, aby przekonwertować plik ETL na plik tekstowy.

Notatka

W przypadku śledzenia za pomocą Detours, wyjście tekstowe jest równie wydajne jak plik ETL. W związku z tym, jeśli rejestrujesz tylko ślady Detours (bez śladów ETW/WPP), zaleca się użycie wyjścia tekstowego.

 

W przypadku śledzenia Detours należy dołączyć MFTrace do uruchomionego procesu (-a) lub użyć narzędzia MFTrace, aby utworzyć nowy proces. W przypadku śladów ETW/WPP MFTrace nasłuchuje dowolnego dostawcy zdarzeń wymienionego w pliku konfiguracji.

Wyniki śledzenia można filtrować, określając słowa kluczowe śledzenia za pomocą opcji wiersza polecenia -k lub w pliku konfiguracji. Bardziej typowe użycie polega jednak na rejestrowaniu wszystkich śladów, a następnie używaniu skryptu lub grep do wyszukiwania określonych wzorców ciągów.

Interpretowanie wyników śledzenia

Możesz użyć narzędzia MFTrace, aby odpowiedzieć na pytania dotyczące tego, co dzieje się w aplikacji lub składniku programu Media Foundation. W poniższej tabeli wymieniono typowe pytania. Druga kolumna zawiera ciąg wyszukiwania, który może pomóc w udzieleniu odpowiedzi na pytanie.

Pytanie Ciągi wyszukiwania
Czy wystąpił błąd? "0xc00d"
Czy topologia została poprawnie rozwiązana? "CTopologyHelpers::Trace"
Czy sesja multimediów została uruchomiona? "MESessionStarted"
Który plik został odtworzony? "CMFSourceResolverDetours"
Jakie są typy multimediów dla strumieni źródłowych? "Nowy strumień", "MENewStream", "CMFMediaSourceDetours::TracePD"
Czy strumienie źródłowe wygenerowały przykłady? "CMFMediaStreamDetours::HandleEvent", "MEMediaSample"
Czy odtwarzanie osiągło koniec danych? "MEEndOfStream", "MEEndOfPresentation"
Czy format uległ zmianie? "MEStreamFormatChanged" (źródła multimediów), "Nowy format", "MESessionStreamSinkFormatChanged" (ujścia multimediów)
Jakie obiekty zostały utworzone? "COle32ExportDetours::CoCreateInstance"
Czy przekształcenia programu Media Foundation (MFT) w potoku przetwarzają jakiekolwiek dane? "CMFTransformDetours::ProcessOutput", "CMFTransformDetours::ProcessInput"
Jakie stany zostały ustawione na MFT? "CMFTransformDetours::P rocessMessage"
Czy MFT zażądał danych wejściowych? MF_E_TRANSFORM_NEED_MORE_INPUT" (synchroniczny MFT), "METransformNeedInput" (asynchroniczny MFT).
Czy asynchroniczny MFT wygenerował dane wyjściowe? ProcessOutputs dostępne
Czy ujście multimediów zażądało próbek? "MEStreamSinkRequestSample"
Czy odbiornik multimediów otrzymał próbki? "CMFStreamSinkDetours::P rocessSample"
DirectShow: które próbki zostały przetworzone? "sample", "CMemInputPinDetours"
DirectShow: Jakiego wykresu filtru użyto? "CGraphHelpers::Trace"
Czy było wiele procesów? "CreateProcess" Uwaga: Również poszukaj identyfikatora procesu, który pojawia się na początku każdego wiersza śledzenia.

 

MFTrace