Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
|
|
-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:
|
|
-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. |
Tematy pokrewne