Řešení chyb profilace a řešení problémů
Tento článek obsahuje řešení některých nejběžnějších chyb, které můžou zabránit použití nebo získání dostatečných dat z profileru výkonu v sadě Visual Studio.
Žádné výsledky
Chyba: V aktuální sadě filtrů nejsou žádná data.
Při otevírání souboru diagnostiky se použijí určité filtry, jako je skrytí nativního kódu nebo skrytí kódu bez uživatele, aby bylo trasování srozumitelnější. Kromě toho existují další filtry, které lze použít, například výběr času a vlákno, které dále zúží zobrazená data. Pokud se tyto filtry použijí tak, aby nezůstala žádná data, zobrazí se toto upozornění.
Jak opravit
- Ujistěte se, že váš výběr času obsahuje data. Pokud jste změnili výběr času v grafu nad daty, výběrem možnosti Vymazat výběr ho resetujte.
- Pokud ještě nejsou žádná data, ujistěte se, že jsou v příslušných rozevíracích sadě povolené všechny kategorie a vlákna.
- Pokud je aplikace, kterou profilujete, nativní kód, nezapomeňte v rozevíracím seznamu Nastavení povolit možnost Zobrazit nativní kód.
- Pokud stále nemáte žádná data, pak trasování, které jste shromáždili, bylo pravděpodobně příliš krátké, než by se všechna data zobrazovala. Ujistěte se, že program, pro který shromažďujete data, se nedokončí příliš rychle (méně než sekunda).
Viz také: Zobrazit externí kód
Dokončení výsledků trvá dlouho
Pokud se analýza haldy po načtení kolekce zdá být pomalá, pročtěte si následující možná řešení, která vám můžou pomoct vyřešit problémy s dobou čekání.
Jak opravit někdy může trvat déle při pokusu o analýzu snímků z aplikací náročných na paměť, ale upgrade na novější verzi sady Visual Studio by měl zkrátit dobu čekání analýzy. Pokud je tento problém po upgradu trvalý, může v nástroji dojít k chybě výkonu. Vytvořte lístek zpětné vazby a nasdílejte vytvořený soubor diagnostiky . S tímto souborem můžeme určit, proč se data pomalu analyzují, a zjistíme, kde můžeme zlepšit výkon.
Nezapomeňte v lístku Feedback zadat soubory výpisu stavu trasování a haldy.
Viz také:
Chyba "Nelze vytvořit soubor manifestu pro tuto diagnostiku" nebo "chyba nemohla vytvořit soubor manifestu pro diagnostiku, Visual Studio nemůže tuto relaci znovu otevřít.".
Tento problém znamená, že při přípravě dat snímku paměti, která se mají analyzovat a zobrazit po zastavení shromažďování dat, došlo k problému. K problému může dojít z několika možných příčin, od selhání získání správných informací z agentů kolekce až po skutečné zpracování dat. Proto nebude možné diagnostikovat, co je problém bez dalšího protokolování.
Jak opravit odpověď na váš lístek zpětné vazby s dalšími informacemi o protokolování, abychom mohli problém diagnostikovat. Informace o protokolu můžete získat spuštěním následujících příkazů z příkazového řádku se zvýšenými oprávněními:
reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogLevel /t REG_SZ /d All /reg:32
reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogDirectory /t REG_SZ /d [directory of your choice] /reg:32
Po spuštění těchto příkazů spusťte Visual Studio, reprodukujte svůj scénář, zavřete Visual Studio, pak zazipujte zvolený adresář protokolu DiagnosticsHub a připojte ho k tomuto lístku. Od tohoto okamžiku bychom měli být schopni lépe diagnostikovat, co se děje.
Po přidání protokolu do lístku spusťte tyto příkazy a zakažte protokolování:
reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogLevel /reg:32
reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogDirectory /reg:32
Chyba: Informace o zdroji nejsou k dispozici.
Pokud chcete zobrazit informace o zdroji, musíte mít soubory PDB k dispozici v době shromažďování. Pokud například shromáždíte soubor diagsession využití procesoru, proveďte v kódu nějaké změny, rekompilujte (který nahradí starou PBD), pak znovu otevřete .diagsession, pravděpodobně nebudete moct zobrazit zdrojové informace o modulech vašeho kódu, které jste aktualizovali.
Jak vyřešit nejjednodušší řešení tohoto problému je shromáždit novou diagnostiku po provedení změn. Tímto způsobem můžete mít jistotu, že jsou vaše soubory PDB aktuální.
Chyba: Analýza paměti selhala kvůli vnitřní chybě.
Po dlouhé relaci profilace paměti dojde k chybě při každém pokusu o analýzu výsledku.
Došlo k neshodě mezi informacemi o snímku zachycenými nástrojem pro paměť a agentem kolekce. Tento výsledek znamená, že nástroj pro paměť nemohl najít soubor stavu haldy pro nativní snímek. Nebo to znamená, že nástroj pro paměť nemohl shodovat čas spuštění GC snímku s časem zaregistrovaným v souboru diagsession pro načtení statistik GCStats.
Oprava tohoto problému byla způsobená chybou nástroje, která byla opravena ve verzi 17.3. Problém by se měl vyřešit upgradem na novější verzi. Pokud problém přetrvává i po upgradu, vytvořte lístek zpětné vazby a připojte se k tomuto lístku:
- Soubor diagnostiky
- Minidump sady Visual Studio
- Snímek obrazovky se snímky paměti pořízené
Pro tento problém neexistuje alternativní řešení a relace profilace se bude muset restartovat.
Chyba: Události diagnostiky X se vynechaly, některé informace v sestavě můžou chybět nebo nepřesné.
Během zachytávání dat se někdy můžou vynechat události, které můžou způsobit nepřesnou nebo nepoužitelnou výslednou sestavu profilace. Ukončené události můžou nastat z mnoha různých důvodů, ale primárně k tomu dochází v případě, že systém nedokáže vyprázdnit události na disk rychleji než příchozí rychlost.
Jak vyřešit opravu , která pomáhá snížit vynechané události, můžete při profilaci zavřít další operace náročné na disk a procesor. Ukončením těchto operací může systém vyhradit další prostředky pro vyprázdnění příchozích událostí. Můžete také zkusit snížit četnost vzorkování u nástrojů, které podporují tato nastavení konfigurace, jako je nástroj Využití procesoru a nástroj přidělování .NET, a snížit tak režii.
Chyba: Prostředky Trasování událostí pro Windows byly vyčerpány.
Profiler sady Visual Studio používá trasování událostí pro Windows (ETW) ke shromažďování informací o výkonu. V systému je k dispozici konečný počet relací Trasování událostí pro Windows, a pokud se už všechny relace používají, zobrazí se následující chyba: ETW resources have been exhausted
Tyto relace používají jiné programy, jako je sada nástrojů SysInternals, další profilátory a další diagnostické nástroje. Tento problém můžete vyřešit některým z těchto řešení:
Zavření programů, které používají relace k uvolnění prostředků, nebo
Když v příkazovém řádku se zvýšenými oprávněními nastavíte další prostředky, spustíte na příkazovém řádku se zvýšenými oprávněními a pak se restartuje:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI" /v EtwMaxLoggers /t REG_DWORD /d 128
Spuštěním tohoto příkazu se zvýší výchozí počet relací z 64 na 128 (256 je maximální povolený počet relací v systému).
Chyba: Nástroj využití procesoru na virtuálním počítači ARM64 nefunguje
Profiler sady Visual Studio používá trasování událostí pro Windows (ETW) ke shromažďování informací o výkonu. Shromažďování ukázek profilů pomocí Trasování událostí pro Windows pro ARM64 se v současné době nepodporuje při spuštění ve virtuálním počítači. Pokud chcete toto omezení obejít, můžete použít nástroj Využití procesoru na skutečném zařízení ARM64 nebo pomocí nástroje Instrumentace zaznamenávat informace o časování.
Chyba: Nástroj pro využití paměti nefunguje na .NET 7 a .NET Runtime 8.0.0-8.0.1 s povoleným serverovým katalogem
Vzhledem k problému, který byl zaveden v modulu runtime .NET 7 a šířený do modulu runtime .NET 8 verze 8.0.0 a 8.0.1, není možné vytvořit výčet objektů při použití uvolňování paměti serveru. Pro aplikace ASP.NET Core je ve výchozím nastavení povolené uvolňování paměti serveru.
Jak opravit
Náhradní řešení tohoto problému:
- Při pořizování snímku nebo shromažďování výpisu paměti aplikace zakažte uvolňování paměti serveru.
- Použijte nechtěnou verzi modulu runtime .NET.
Viz také:
- Uvolnění paměti pracovní stanice a serveru
- Možnosti konfigurace modulu runtime pro uvolňování paměti
- DaC se nepodaří vypsat objekty haldy na platformě .NET 7 nebo novější kvůli oblastem GC