Bagikan melalui


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.
  • 0: Tidak ada
  • 1: Kritis
  • 2: Kesalahan
  • 3: Peringatan
  • 4: Informatif
  • 5: Verbose
  • 16: Pemecahan Masalah
-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:
  • .etl: File log jejak kejadian (ETL).
  • .log atau .txt: File teks.
-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.

 

MFTrace