Penampil Peristiwa
Di Profiler Performa, Anda dapat mengumpulkan info diagnostik saat aplikasi berjalan, lalu memeriksa informasi yang dikumpulkan setelah aplikasi berhenti seperti analisis pasca-mortem.
Penampil peristiwa generik menunjukkan aktivitas aplikasi melalui daftar peristiwa seperti beban modul, mulai utas, dan konfigurasi sistem. Tampilan ini membantu Anda mendiagnosis dengan lebih baik bagaimana performa aplikasi Anda dalam profiler Visual Studio.
Siapkan
Pilih Alt+F2 untuk membuka Performance Profiler di Visual Studio.
Pilih kotak centang Penampil Peristiwa.
Pilih tombol Mulai untuk menjalankan alat.
Setelah alat mulai berjalan, lihat skenario untuk membuat profil di aplikasi Anda. Lalu pilih Hentikan pengumpulan atau tutup aplikasi Anda untuk melihat data Anda.
Untuk informasi selengkapnya tentang cara membuat alat lebih efisien, lihat Mengoptimalkan pengaturan Pembuatan Profil.
Memahami data Anda
Nama kolom | Deskripsi |
---|---|
Nama Penyedia | Sumber peristiwa |
Nama Acara | Kejadian sebagaimana ditentukan oleh penyedianya |
Teks | Deskripsi penyedia, nama peristiwa, dan ID untuk peristiwa tersebut |
Stempel waktu (md) | Saat peristiwa berlangsung |
GUID Penyedia | ID penyedia peristiwa |
ID Peristiwa | ID peristiwa |
ID Proses | Proses dari mana peristiwa terjadi (jika diketahui) |
Nama Proses | Nama proses jika berjalan secara aktif |
ID Utas | ID utas tempat peristiwa terjadi (jika diketahui) |
Jika ada kolom yang hilang secara default, klik kanan salah satu header kolom yang ada dan pilih kolom yang ingin Anda tambahkan.
Saat Anda memilih peristiwa, jendela Properti Tambahan muncul. Properti Umum memperlihatkan daftar properti yang akan muncul untuk peristiwa apa pun. Properti Payload menunjukkan properti khusus untuk peristiwa tersebut. Untuk beberapa peristiwa, Anda juga dapat melihat Tumpukan.
Mengatur data Anda
Semua kolom kecuali untuk kolom Teks dapat diurutkan.
Penampil peristiwa menampilkan hingga 20.000 peristiwa sekali waktu. Untuk fokus pada peristiwa yang menarik, Anda dapat memfilter tampilan peristiwa dengan memilih filter Peristiwa. Anda juga dapat melihat persentase jumlah total peristiwa yang terjadi untuk setiap penyedia, dan informasi ini memberi Anda perincian di mana waktu Anda dihabiskan. Arahkan mouse ke atas satu filter peristiwa untuk melihat tips alat yang menunjukkan:
- Nama kejadian
- Penyedia
- GUID
- Persentase total peristiwa
- Jumlah peristiwa
Filter penyedia menunjukkan persentase dari jumlah total peristiwa yang terjadi untuk setiap penyedia. Arahkan mouse ke atas satu penyedia untuk melihat tips alat serupa dengan nama penyedia, persentase total peristiwa, dan jumlah peristiwa.
Mengaktifkan peristiwa ETW kustom
Anda dapat melengkapi kode Anda dengan peristiwa ETW kustom dan memungkinkannya muncul di Penampil Peristiwa. Untuk mengaktifkan peristiwa kustom:
Buat kode peristiwa kustom.
Contoh kode peristiwa kustom C++ disediakan di akhir bagian ini.
Buka Profiler Performa (Alt + F2), aktifkan Penampil Peristiwa, lalu pilih ikon Pengaturan (ikon roda gigi) di sampingnya.
Dalam kotak dialog, aktifkan baris pertama di bawah Penyedia Tambahan, lalu ambil salah satu tindakan berikut:
Untuk kode peristiwa kustom asli, atur GUID Penyedia berdasarkan GUID untuk kode peristiwa kustom, dan biarkan nilai Nama Penyedia kosong atau gunakan nilai defaultnya.
Untuk kode peristiwa kustom C#, atur nilai Nama Penyedia yang sama dengan yang Anda gunakan saat mendeklarasikan kode peristiwa Anda. Nama ini akan dikonversi menjadi GUID di latar belakang, jadi biarkan GUID Penyedia kosong.
Untuk peristiwa kustom asli, baris akan terlihat mirip dengan ilustrasi berikut.
Pilih OK.
Peristiwa kustom muncul di Penampil Peristiwa saat Anda mengumpulkan jejak diagnostik dan membukanya. Ilustrasi berikut ini memperlihatkan peristiwa kustom di Penampil Peristiwa dengan pemfilteran diatur untuk memperlihatkan hanya peristiwa kustom.
Berikut adalah contoh kode peristiwa kustom untuk C++.
#include <Windows.h>
#include <evntprov.h>
#include <iostream>
#include <thread>
// This GUID must be regenerated so it is unique for your provider
// {7369B7AC-64EB-4618-B6B6-C8442B12E8F2}
GUID customEventProvider = { 0x7369b7ac, 0x64eb, 0x4618, { 0xb6, 0xb6, 0xc8, 0x44, 0x2b, 0x12, 0xe8, 0xf2 } };
REGHANDLE _customEventProviderRegHandle = 0;
// Id, Version, Channel, Level, OpCode, Task, Keyword
const EVENT_DESCRIPTOR CustomEventDescriptor = { 1, 0, 0, 0, 0, 0, 1 };
int main()
{
// Register the provider
ULONG res = ::EventRegister(&customEventProvider, nullptr, nullptr, &_customEventProviderRegHandle);
if (res != ERROR_SUCCESS)
{
return res;
}
byte data[] = { 0xFF, 0xFF, 0xFF, 0xFF };
EVENT_DATA_DESCRIPTOR eventData[1];
::EventDataDescCreate(&(eventData[0]), &data, sizeof(data));
for (int i = 0; i < 10; ++i)
{
std::this_thread::sleep_for(std::chrono::milliseconds(1000));
::EventWrite(_customEventProviderRegHandle, &CustomEventDescriptor, _countof(eventData), eventData);
std::cout << "Wrote event\n";
}
res = ::EventUnregister(_customEventProviderRegHandle);
if (res != ERROR_SUCCESS)
{
return res;
}
return 0;
}
Konten terkait
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk