MFTrace 사용
MFTrace는 Microsoft Media Foundation 애플리케이션에 대한 추적 로그를 생성하기 위한 도구입니다.
MFTrace는 우회 라이브러리를 사용하여 Media Foundation API 호출에 연결하고 추적 로그를 생성합니다. MFTrace는 ETW(Windows용 이벤트 추적) 또는 WPP(소프트웨어 추적 전처리기)를 사용하여 추적을 생성하는 모든 구성 요소의 추적을 기록할 수도 있습니다. MFTrace에서 새 프로세스를 시작하거나 MFTrace를 기존 프로세스에 연결하여 추적 로그를 생성할 수 있습니다.
사용
mftrace [-a Process][-c ConfigurationFile][-dc][-es][-k KeyWords][-l Level][-o OutputFile][-v][-?] [{COMMAND|ETL_FILE}]
명령줄 인수 | 설명 |
---|---|
-a프로세스 ID 또는 프로세스 이름 |
실행 중인 프로세스에 연결. |
-c구성 파일 |
지정된 구성 파일에서 설정을 읽습니다. MFTrace 구성 파일을 참조하세요. |
-dc |
자식 프로세스에 대한 추적을 사용하지 않도록 설정합니다. 기본적으로 자식 프로세스에 대해 추적을 사용하도록 설정됩니다. |
-es |
공용 기호를 사용하도록 설정합니다. |
-k키워드 |
쉼표로 구분된 키워드 목록입니다. MFTrace 키워드를 참조 하세요. |
-l수준 |
추적 수준입니다.
|
-o출력 파일 |
지정된 파일에 추적 출력을 씁니다. 기본적으로 출력은 stdout으로 이동합니다. 출력 파일을 지정하는 경우 파일 이름 확장명은 다음 중 하나여야 합니다.
|
-v |
자세한 정보 표시 모드를 사용하도록 설정합니다. |
-? |
사용 정보를 표시합니다. |
명령 |
새 프로세스를 만드는 명령줄 인수입니다. |
ETL_FILE |
기존 ETL 파일의 이름입니다. 이 인수가 제공되면 ETL 파일이 텍스트 출력으로 변환됩니다. |
환경 변수
-
TRACE_FORMAT_SEARCH_PATH
-
Windows WPP(소프트웨어 추적 전처리기)를 사용하는 구성 요소를 추적하려면 이 환경 변수를 구성 요소에 대한 TMF(추적 메시지 형식) 파일의 경로를 지정하도록 설정합니다.
-
_NT_SYMBOL_PATH
-
기호 조회를 사용하도록 설정한 경우 이 환경 변수를 설정하여 기호 경로를 지정합니다.
예제
새 프로세스를 만들고 해당 프로세스를 추적합니다.
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는 우회 추적만 생성합니다. ETW 또는 WPP 추적을 생성하려면 구성 파일을 제공해야 합니다. 구성 파일은 추적 공급자의 이름을 제공합니다. 자세한 내용은 MFTrace 구성 파일을 참조 하세요.
MFTrace는 다음 대상으로 출력을 보낼 수 있습니다.
- stdout (기본값).
- 텍스트 파일입니다.
- 이진 ETL 파일입니다.
ETW/WPP 추적을 로깅하는 경우 추적 데이터가 이진 Blob으로 저장되기 때문에 ETL 파일이 가장 효율적인 옵션입니다. 추적 세션이 완료되면 MFTrace를 사용하여 ETL 파일을 텍스트 파일로 변환할 수 있습니다.
참고 항목
우회 추적의 경우 텍스트 출력은 ETL 파일만큼 효율적입니다. 따라서 우회 추적만 기록하는 경우(ETW/WPP 추적 없음) 텍스트 출력을 사용하는 것이 좋습니다.
우회 추적의 경우 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" |
파이프라인의 MFT(Media Foundation Transforms)가 데이터를 처리했나요? | "CMFTransformDetours::P rocessOutput", "CMFTransformDetours::P rocessInput" |
MFT에 설정된 상태는 무엇인가요? | "CMFTransformDetours::P rocessMessage" |
MFT가 입력 데이터를 요청했나요? | "MF_E_TRANSFORM_NEED_MORE_INPUT"(동기 MFT), "METransformNeedInput"(비동기 MFT). |
비동기 MFT에서 출력 데이터를 생성했나요? | "ProcessOutputs available" |
미디어 싱크가 샘플을 요청했나요? | "MEStreamSinkRequestSample" |
미디어 싱크에서 샘플을 받았나요? | "CMFStreamSinkDetours::P rocessSample" |
DirectShow: 어떤 샘플이 처리되었나요? | "sample", "CMemInputPinDetours" |
DirectShow: 사용된 필터 그래프는 무엇인가요? | "CGraphHelpers::Trace" |
여러 프로세스가 있었나요? | "CreateProcess" 참고: 모든 추적 줄의 시작 부분에 나타나는 프로세스 식별자를 찾습니다. |
관련 항목