Olay görüntüleyicisi
Performans Profili Oluşturucu'da, uygulamanız çalışırken tanılama bilgilerini toplayabilir ve ardından toplanan bilgileri uygulama durduktan sonra son durum analizi gibi inceleyebilirsiniz.
Genel olay görüntüleyicisi modül yükü, iş parçacığı başlatma ve sistem yapılandırması gibi olayların listesi aracılığıyla uygulama etkinliğini gösterir. Bu görünüm, uygulamanızın Visual Studio profil oluşturucusunun içinde nasıl çalıştığını daha iyi tanılamanıza yardımcı olur.
Ayarlama
Visual Studio'da Performans Profili Oluşturucu'yu açmak için Alt+F2 tuşlarına basın.
Olay Görüntüleyicisi onay kutusunu seçin.
Aracı çalıştırmak için Başlangıç düğmesini seçin.
Araç çalışmaya başladıktan sonra uygulamanızda profil oluşturma senaryosuna gidin. Ardından verilerinizi görmek için Toplamayı durdur'u seçin veya uygulamanızı kapatın.
Aracı daha verimli hale getirme hakkında daha fazla bilgi için bkz . Profil oluşturma ayarlarını iyileştirme.
Verilerinizi anlama
Sütun adı | Açıklama |
---|---|
Sağlayıcı Adı | Olay kaynağı |
Olay Adı | Sağlayıcısı tarafından belirtilen olay |
Metin | Olayın sağlayıcı, olay adı ve kimliği açıklamaları |
Zaman damgası (ms) | Olay gerçekleştiğinde |
Sağlayıcı Guid'i | Olay sağlayıcısının kimliği |
Olay Kodu | Olayın kimliği |
Process ID | Olayın gerçekleştiği işlem (biliniyorsa) |
İşlem Adı | Etkin bir şekilde çalışıyorsa işlemin adı |
İş Parçacığı Kimliği | Olayın oluştuğu iş parçacığının kimliği (biliniyorsa) |
Varsayılan olarak herhangi bir sütun eksikse, var olan sütun üst bilgilerinden birine sağ tıklayın ve eklemek istediğiniz sütunu seçin.
Bir olayı seçtiğinizde Ek Özellikler penceresi görüntülenir. Ortak Özellikler , herhangi bir olay için görünecek özelliklerin listesini gösterir. Payload Özellikleri , olaya özgü özellikleri gösterir. Bazı olaylar için Yığınları da görüntüleyebilirsiniz.
Verilerinizi düzenleme
Metin sütunu dışındaki tüm sütunlar sıralanabilir.
Olay görüntüleyicisi aynı anda en fazla 20.000 olay görüntüler. İlgi çekici olaylara odaklanmak için Olay filtresini seçerek olayların görünümünü filtreleyebilirsiniz. Ayrıca, her sağlayıcı için gerçekleşen toplam olay sayısının yüzde kaçını görebilirsiniz ve bu bilgiler size zamanınızın nereye harcandığının dökümünü verir. Aşağıdakileri gösteren bir araç ipucu görmek için tek bir olay filtresinin üzerine gelin:
- Olay adı
- Provider
- GUID
- Toplam olayların yüzdesi
- Olay sayısı
Sağlayıcı filtresi, her sağlayıcı için gerçekleşen toplam olay sayısının yüzde kaçını gösterir. Sağlayıcı adı, toplam olayların yüzdesi ve olay sayısı ile benzer bir araç ipucu görmek için tek bir sağlayıcının üzerine gelin.
Özel ETW olaylarını etkinleştirme
Kodunuzu özel ETW olaylarıyla izleyebilir ve Olay Görüntüleyicisi'nde gösterilmesini sağlayabilirsiniz. Özel olayları etkinleştirmek için:
Özel olay kodunu oluşturun.
Bu bölümün sonunda bir C++ özel olay kodu örneği verilmiştir.
Performans Profili Oluşturucu'yu (Alt + F2) açın, Olay Görüntüleyicisi'ni etkinleştirin ve yanındaki Ayarlar simgesini (dişli simgesi) seçin.
İletişim kutusunda, Ek Sağlayıcılar altındaki ilk satırı etkinleştirin ve aşağıdaki eylemlerden birini yapın:
Yerel özel olay kodu için, özel olay kodunun GUID'sini temel alarak Sağlayıcı GUID'sini ayarlayın ve Sağlayıcı Adı değerini boş bırakın veya varsayılan değerini kullanın.
C# özel olay kodu için, olay kodunuzu bildirirken kullandığınız Sağlayıcı Adı değerini ayarlayın. Bu ad arka planda GUID'ye dönüştürülür, bu nedenle Sağlayıcı GUID'sini boş bırakın.
Yerel bir özel olay için, satır aşağıdaki çizime benzer görünmelidir.
Tamam'ı seçin.
Özel olay, bir tanılama izlemesi toplayıp açtığınızda Olay Görüntüleyicisi'nde görünür. Aşağıdaki çizimde, Olay Görüntüleyicisi'ndeki özel olaylar gösterilir ve filtreleme yalnızca özel olayı gösterecek şekilde ayarlanmıştır.
C++ için özel olay kodu örneği aşağıda verilmiştır.
#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;
}