Menggunakan MFTrace
MFTrace adalah alat untuk menghasilkan log jejak untuk aplikasi Microsoft Media Foundation.
MFTrace menggunakan pustaka Detours untuk mengaitkan ke panggilan API Media Foundation dan menghasilkan log jejak. MFTrace juga dapat merekam jejak dari komponen apa pun yang menggunakan Pelacakan Peristiwa untuk Windows (ETW) atau preprocessor pelacakan perangkat lunak (WPP) untuk menghasilkan jejak. Log jejak dapat dihasilkan dengan memulai proses baru dari MFTrace, atau dengan melampirkan MFTrace ke proses yang ada.
Penggunaan
mftrace [-aProcess][-cConfigurationFile][-dc][-es][-kKeyWords][-lLevel][-oOutputFile][-v][-?] [{COMMAND|ETL_FILE}]
Argumen baris perintah | Deskripsi |
---|---|
-aID Proses atau Nama Proses |
Lampirkan ke proses yang sedang berjalan. |
-cFile Konfigurasi |
Baca pengaturan dari file konfigurasi yang ditentukan. Lihat File Konfigurasi MFTrace. |
-arus searah |
Nonaktifkan pelacakan untuk proses anak. Secara default, pelacakan diaktifkan untuk proses anak. |
-es |
Aktifkan simbol publik. |
-kKata Kunci |
Daftar kata kunci yang dipisahkan koma. Lihat Kata Kunci MFTrace. |
-lTingkat |
Tingkat pelacakan.
|
-oFile Output |
Tulis output jejak ke file yang ditentukan. Secara default, output masuk ke stdout. Jika file output ditentukan, ekstensi nama file harus salah satu dari yang berikut ini:
|
-v |
Aktifkan mode verbos. |
-? |
Menampilkan informasi penggunaan. |
PERINTAH |
Argumen baris perintah untuk membuat proses baru. |
ETL_FILE |
Nama file ETL yang ada. Jika argumen ini disediakan, file ETL dikonversi ke output teks. |
Variabel Lingkungan
-
TRACE_FORMAT_SEARCH_PATH
-
Untuk melacak komponen yang menggunakan preprocessor pelacakan perangkat lunak Windows (WPP), atur variabel lingkungan ini untuk menentukan jalur ke file format pesan jejak (TMF) untuk komponen.
-
_NT_SYMBOL_PATH
-
Jika pencarian simbol diaktifkan (-es), atur variabel lingkungan ini untuk menentukan jalur simbol.
Contoh
Buat proses baru dan lacak proses tersebut:
mftrace.exe wmplayer.exe Wildlife.wmv
Lampirkan MFTrace ke proses yang sudah ada:
mftrace.exe -a wmplayer.exe
mftrace.exe -a 9132
Kirim output jejak ke file teks:
mftrace.exe -a wmplayer.exe -o trace.txt
Lacak peristiwa ETW atau WPP:
mftrace.exe -c config.xml -o trace.txt
mftrace.exe -c config.xml -o trace.etl
Catatan
Contoh pertama menghasilkan file teks. Contoh kedua menghasilkan file ETL.
Mengonversi file ETL menjadi file teks:
mftrace.exe -o trace.txt trace.etl
Keterangan
Secara default, MFTrace hanya menghasilkan jejak Detours. Untuk menghasilkan jejak ETW atau WPP, Anda harus menyediakan file konfigurasi. File konfigurasi memberikan nama penyedia pelacakan. Untuk informasi selengkapnya, lihat File Konfigurasi MFTrace.
MFTrace dapat mengirim output ke tujuan berikut:
- stdout (bawaan).
- Sebuah file teks.
- File biner ETL.
Jika Anda mencatat jejak ETW/WPP, file ETL adalah opsi yang paling efisien, karena data pelacakan disimpan sebagai blob biner. Setelah sesi pelacakan selesai, Anda dapat menggunakan MFTrace untuk mengonversi file ETL ke file teks.
Catatan
Untuk pelacakan menggunakan Detours, hasil keluaran teks sama efisiennya dengan file ETL. Oleh karena itu, jika Anda hanya mencatat jejak Detours (tanpa jejak ETW/WPP), disarankan menggunakan output teks.
Untuk pelacakan Detours, Anda harus mengaitkan MFTrace ke proses yang sedang berjalan (-a) atau menggunakan MFTrace untuk membuat proses baru. Untuk pelacakan ETW/WPP, MFTrace mendengarkan penyedia event apa pun yang tercantum dalam file konfigurasi.
Anda dapat memfilter hasil pelacakan dengan menentukan kata kunci pelacakan, baik melalui opsi baris perintah -k , atau dalam file konfigurasi. Namun, penggunaan yang lebih umum adalah mencatat semua jejak dan kemudian menggunakan skrip atau grep untuk mencari pola string tertentu.
Menginterpretasikan Hasil Pelacakan
Anda dapat menggunakan MFTrace untuk menjawab pertanyaan tentang apa yang terjadi di dalam aplikasi atau komponen Media Foundation Anda. Tabel berikut ini mencantumkan beberapa pertanyaan umum. Kolom kedua memberikan string pencarian yang dapat membantu menjawab pertanyaan.
Pertanyaan | Mencari string |
---|---|
Apakah terjadi kesalahan? | "0xc00d" |
Apakah topologi berhasil diselesaikan dengan benar? | "CTopologyHelpers::Trace" |
Apakah Sesi Media dimulai? | "MESessionStarted" |
File mana yang diputar? | "CMFSourceResolverDetours" |
Apa saja jenis media untuk aliran sumber? | "Aliran baru", "MENewStream", "CMFMediaSourceDetours::TracePD" |
Apakah aliran sumber menghasilkan sampel? | "CMFMediaStreamDetours::HandleEvent", "MEMediaSample" |
Apakah pemutaran mencapai akhir data? | "MEEndOfStream" (akhir aliran), "MEEndOfPresentation" (akhir presentasi) |
Apakah format berubah? | "MEStreamFormatChanged" (sumber media), "Format baru", "MESessionStreamSinkFormatChanged" (snk media) |
Objek apa yang dibuat? | "COle32ExportDetours::CoCreateInstance" |
Apakah Transformasi Media Foundation (MFTs) dalam jalur proses memproses data apa pun? | "CMFTransformDetours::ProcessOutput", "CMFTransformDetours::ProcessInput" |
Status apa yang ditetapkan pada MFTs? | "CMFTransformDetours::P rocessMessage" |
Apakah MFT meminta data masukan? | "MF_E_TRANSFORM_NEED_MORE_INPUT" (MFT sinkron), "METransformNeedInput" (MFT asinkron). |
Apakah MFT asinkron menghasilkan data output? | "ProcessOutputs" tersedia |
Apakah sebuah 'media sink' meminta sampel? | "MEStreamSinkRequestSample" |
Apakah penampung media menerima sampel? | "CMFStreamSinkDetours::P rocessSample" |
DirectShow: Sampel mana yang diproses? | "contoh", "CMemInputPinDetours" |
DirectShow: Grafik filter apa yang digunakan? | "CGraphHelpers::Trace" |
Apakah ada beberapa proses? | Catatan "CreateProcess" : Cari juga pengidentifikasi proses, yang muncul di awal setiap garis pelacakan. |
Topik terkait