Prohlížeč událostí
V profileru výkonu můžete shromažďovat diagnostické informace, když je vaše aplikace spuštěná, a pak po zastavení aplikace prozkoumat shromážděné informace, jako je analýza po mortemu.
Prohlížeč obecných událostí zobrazuje aktivitu aplikace prostřednictvím seznamu událostí, jako je načtení modulu, spuštění vlákna a konfigurace systému. Toto zobrazení vám pomůže lépe diagnostikovat, jak vaše aplikace probíhá v profileru sady Visual Studio.
Nastavení
Vyberte Alt+F2 a otevřete profiler výkonu v sadě Visual Studio.
Zaškrtněte políčko Prohlížeč událostí.
Nástroj spustíte výběrem tlačítka Start.
Po spuštění nástroje si projděte scénář profilování v aplikaci. Pak vyberte Zastavit shromažďování nebo zavřete aplikaci a zobrazte data.
Další informace o tom, jak nástroj zefektivnit, najdete v tématu Optimalizace nastavení profilace.
Pochopení vašich dat
Název sloupce | Popis |
---|---|
Název poskytovatele | Zdroj události |
Název události | Událost určená jeho poskytovatelem |
Text | Popis zprostředkovatele, názvu události a ID události |
Časové razítko (ms) | Kdy došlo k události |
Identifikátor GUID zprostředkovatele | ID zprostředkovatele událostí |
ID události | ID události |
Process ID | Proces, ze kterého došlo k události (pokud je známo) |
Název procesu | Název procesu, pokud je aktivně spuštěný |
ID vlákna | ID vlákna, ze kterého došlo k události (pokud je známo) |
Pokud některý sloupec ve výchozím nastavení chybí, klikněte pravým tlačítkem myši na některé z existujících záhlaví sloupců a vyberte sloupec, který chcete přidat.
Když vyberete událost, zobrazí se okno Další vlastnosti . Běžné vlastnosti zobrazují seznam vlastností, které se zobrazí pro libovolnou událost. Vlastnosti datové části zobrazují vlastnosti specifické pro danou událost. U některých událostí můžete také zobrazit zásobníky.
Uspořádání dat
Všechny sloupce s výjimkou sloupce Text se dají seřadit.
Prohlížeč událostí zobrazuje najednou až 20 000 událostí. Pokud se chcete zaměřit na události, které vás zajímají, můžete filtrovat zobrazení událostí výběrem filtru událostí. Můžete také zjistit, jaké procento celkového počtu událostí u jednotlivých poskytovatelů nastalo, a tyto informace vám poskytují rozpis místa, kde se váš čas tráví. Když najedete myší na jeden filtr událostí, zobrazí se popis, který zobrazuje:
- Název události
- Poskytovatel
- Identifikátor GUID
- Procento celkových událostí
- Počet událostí
Filtr zprostředkovatele zobrazuje procento celkového počtu událostí, ke kterým došlo u každého zprostředkovatele. Najeďte myší na jednoho zprostředkovatele, aby se zobrazil podobný popis s názvem poskytovatele, procentem celkových událostí a počtem událostí.
Povolení vlastních událostí pro Windows
Kód můžete instrumentovat s vlastními událostmi tras pro Windows a povolit jejich zobrazení v Prohlížeči událostí. Povolení vlastních událostí:
Sestavte vlastní kód události.
Na konci této části je k dispozici příklad vlastního kódu události jazyka C++.
Otevřete Profiler výkonu (Alt + F2), povolte Prohlížeč událostí a pak vyberte ikonu Nastavení (ikona ozubeného kola) vedle něj.
V dialogovém okně povolte první řádek v části Další zprostředkovatelé a proveďte jednu z následujících akcí:
V případě nativního vlastního kódu události nastavte identifikátor GUID zprostředkovatele na základě identifikátoru GUID vlastního kódu události a ponechte hodnotu Název zprostředkovatele prázdnou nebo použijte výchozí hodnotu.
Pro kód vlastní události jazyka C# nastavte stejnou hodnotu názvu zprostředkovatele, kterou jste použili při deklarování kódu události. Tento název se převede na identifikátor GUID na pozadí, takže ponechte identifikátor GUID zprostředkovatele prázdný.
V případě nativní vlastní události by měl řádek vypadat podobně jako na následujícím obrázku.
Vyberte OK.
Vlastní událost se zobrazí v Prohlížeči událostí, když shromáždíte trasování diagnostiky a otevřete ji. Následující obrázek znázorňuje vlastní události v Prohlížeči událostí s nastaveným filtrováním tak, aby zobrazovaly pouze vlastní událost.
Tady je příklad vlastního kódu události pro 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;
}