Penyedia runtime bahasa umum ETW
Runtime bahasa umum (CLR) memiliki dua penyedia: penyedia runtime dan penyedia rundown.
Penyedia runtime meningkatkan peristiwa, tergantung pada kata kunci mana (kategori peristiwa) yang diaktifkan. Misalnya, Anda dapat mengumpulkan peristiwa pemuat dengan mengaktifkan kata kunci LoaderKeyword
.
Pelacakan Peristiwa untuk Windows (ETW) peristiwa masuk ke file yang memiliki ekstensi .etl, yang nantinya dapat diproses lebih lanjut dalam file nilai yang dipisahkan koma (.csv) sesuai kebutuhan. Untuk informasi tentang cara mengonversi file .etl ke file .csv, lihat Mengontrol Pengelogan .NET Framework.
Penyedia Runtime
Penyedia runtime adalah penyedia runtime bahasa umum ETW utama.
Penyedia runtime dari runtime bahasa umum GUID adalah e13c0d23-ccbc-4e12-931b-d9cc2eee27e4.
Untuk contoh cara mencatat dan melihat peristiwa runtime bahasa umum ETW dengan menggunakan alat yang umum tersedia, lihat Mengontrol Pengelogan .NET Framework.
Selain menggunakan kata kunci seperti LoaderKeyword
, Anda mungkin harus mengaktifkan kata kunci untuk peristiwa pengelogan yang mungkin dinaikkan terlalu sering. kata kunci StartEnumerationKeyword
dan EndEnumerationKeyword
mengaktifkan peristiwa ini dan dirangkum dalam Kata Kunci dan Tingkat Runtime Bahasa Umum ETW.
Penyedia Rundown
Penyedia rundown harus diaktifkan untuk penggunaan tujuan khusus tertentu. Namun, untuk sebagian besar pengguna, penyedia runtime harus cukup.
Penyedia rundown runtime bahasa umum GUID adalah A669021C-C450-4609-A035-5AF59AF4DF18.
Biasanya, pengelogan ETW diaktifkan sebelum proses diluncurkan, dan pengelogan dimatikan setelah proses keluar. Namun, jika pengelogan ETW diaktifkan saat proses sedang berlangsung, informasi tambahan diperlukan tentang proses tersebut. Misalnya, untuk resolusi simbol, Anda harus mencatat peristiwa metode untuk metode yang sudah dimuat sebelum pengelogan diaktifkan.
Peristiwa DCStart
dan DCEnd
menangkap status proses saat pengumpulan data dimulai dan dihentikan. (Negara mengacu pada informasi pada tingkat tinggi, termasuk metode yang just-in-time (JIT) dikompilasi dan rakitan yang dimuat.) Kedua peristiwa ini dapat memberikan informasi tentang apa yang telah terjadi dalam proses; misalnya, metode mana yang dikompilasi JIT, dan sebagainya.
Hanya peristiwa dengan DC
, DCStart
, DCEnd
, atau DCInit
dalam namanya yang dinaikkan di bawah penyedia rundown. Selain itu, peristiwa ini hanya diangkat di bawah penyedia gambaran umum.
Selain filter kata kunci peristiwa, penyedia rundown juga mendukung kata kunci StartRundownKeyword
dan EndRundownKeyword
untuk menyediakan pemfilteran yang ditargetkan.
Mulai Rundown
Rundown mulai dipicu saat pengelogan di bawah penyedia rundown diaktifkan dengan kata kunci StartRundownKeyword
. Ini menyebabkan peristiwa DCStart
dinaikkan, dan menangkap status sistem. Sebelum dimulainya enumerasi, peristiwa DCStartInit
dinaikkan. Di akhir enumerasi, peristiwa DCStartComplete
dinaikkan untuk memberi tahu pengontrol bahwa pengumpulan data dihentikan secara normal.
Akhiri Rundown
Rundown akhir dipicu saat pengelogan di bawah penyedia rundown diaktifkan dengan kata kunci EndRundownKeyword
. Gambaran umum akhir berhenti membuat profil pada proses yang terus dijalankan. Peristiwa DCEnd
menangkap status sistem saat pembuatan profil dihentikan.
Sebelum dimulainya enumerasi, peristiwa DCEndInit
dinaikkan. Di akhir pencacahan, peristiwa DCEndComplete
dimunculkan untuk memberi tahu konsumen bahwa pengumpulan data dihentikan secara normal. Mulai gambaran umum dan gambaran umum akhir terutama digunakan untuk resolusi simbol terkelola. Ikhtisar awal dapat memberikan informasi rentang alamat untuk metode yang sudah dikompilasi JIT sebelum sesi pembuatan profil dimulai. Gambaran umum akhir dapat memberikan informasi rentang alamat untuk semua metode yang telah dikompilasi JIT saat pembuatan profil akan dimatikan.
Gambaran umum akhir tidak terjadi secara otomatis saat sesi pembuatan profil dihentikan. Sebaliknya, alat yang berusaha melakukan resolusi simbol terkelola harus secara eksplisit memanggil sesi penyedia rundown CLR dengan kata kunci EndRundownKeyword
diaktifkan, tepat sebelum pembuatan profil dihentikan.
Meskipun mulai rundown atau akhiri rundown dapat memberikan informasi rentang alamat metode untuk resolusi simbol terkelola, kami sarankan Anda menggunakan kata kunci EndRundownKeyword
(yang menyediakan peristiwa DCEnd
) alih-alih StartRundownKeyword
kata kunci (yang menyediakan peristiwa DCStart
). Menggunakan StartRundownKeyword
menyebabkan rundown terjadi selama sesi pembuatan profil, yang dapat mengganggu skenario yang diprofilkan.
Pengumpulan Data ETW Menggunakan Penyedia Runtime dan Rundown
Contoh berikut menunjukkan cara menggunakan penyedia gambaran umum CLR dengan cara yang memungkinkan resolusi simbol proses terkelola dengan dampak minimal, terlepas dari apakah proses dimulai atau berakhir di dalam atau di luar jendela yang diprofilkan.
Aktifkan pengelogan ETW dengan menggunakan penyedia runtime CLR:
xperf -start clr -on e13c0d23-ccbc-4e12-931b-d9cc2eee27e4:0x1CCBD:0x5 -f clr1.etl
Log akan disimpan ke file clr1.etl.
Untuk menghentikan pembuatan profil saat proses terus dijalankan, mulai penyedia rundown untuk mengambil peristiwa
DCEnd
:xperf -start clrRundown -on A669021C-C450-4609-A035-5AF59AF4DF18:0xB8:0x5 -f clr2.etl
Ini memungkinkan pengumpulan peristiwa
DCEnd
untuk memulai sesi rundown. Anda mungkin perlu menunggu 30 hingga 60 detik agar semua peristiwa dikumpulkan. Log akan disimpan ke file clr1.et2.Matikan semua pembuatan profil ETW:
xperf -stop clrRundown xperf -stop clr
Gabungkan profil untuk membuat satu file log:
xperf -merge clr1.etl clr2.etl merged.etl
File merged.etl akan berisi peristiwa dari runtime dan sesi penyedia gambaran umum.
Alat dapat menjalankan langkah 2 dan 3 (memulai sesi gambaran umum dan kemudian mengakhiri pembuatan profil) alih-alih segera mematikan pembuatan profil ketika pengguna meminta pembuatan profil dihentikan. Alat juga dapat menjalankan langkah 4.