Ř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 diagsession se aplikují určité filtry, jako je skrytí nativního kódu nebo skrytí neuživatelského kódu, 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 stále nejsou žádná data, ujistěte se, že ve všech rozevíracích seznamech jsou povoleny 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, trasování, které jste provedli, bylo pravděpodobně příliš krátké, aby v něm byla nějaká data. 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

Trvá dlouho, než jsou výsledky hotové.

Pokud se analýza haldy po sběru zdá být pomalá, přečtěte si následující možná řešení, která vám mohou pomoci vyřešit problémy s dobou čekání.

Jak opravit Někdy může trvat déle, než se pokusíte analyzovat snímky 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 diagsession. 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 diagsession" nebo "Chyba při vytváření souboru manifestu pro diagsession, Visual Studio nebude moci 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 neúspěchu při získávání správných informací od sběračů dat až po samo zpracování dat. Proto nebude možné diagnostikovat, co je problém bez dalšího protokolování.

Jak opravit odpovězte na lístek Zpětná vazba s dalšími logovacími informacemi, 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 se záznamem využití CPU, provedete nějaké změny ve svém kódu, rekompilujte (což nahradí starou PBD), pak znovu otevřete .diagsession, pravděpodobně nebudete moci zobrazit zdrojové informace o modulech vašeho kódu, které jste pozměnili.

Jak opravit Nejjednodušším řešením 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 profilování paměti se při každém pokusu o analýzu výsledku objeví chyba.

Došlo k neshodě mezi informacemi o snímku zachycenými nástrojem pro správu paměti a sběračem dat. Tento výsledek znamená, že nástroj pro správu paměti nemohl najít soubor stavu haldy pro nativní snímek. Nebo to znamená, že nástroj pro paměť nemohl přiřadit čas spuštění GC snímku k času zaregistrovanému v souboru diagsession pro načtení GCStats.

Jak opravit Příčinou tohoto problému byla chyba v nástroji, která byla opravena v sadě Visual Studio 2022 verze 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 diagsession
  • Minidump sady Visual Studio
  • Snímek obrazovky obsahující pořízené snímky paměti.

Pro tento problém neexistuje žádné řešení a profilovací relace bude muset být restartována.

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. Ztracené 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ž je rychlost příchozích dat.

Jak opravit Chcete-li snížit vyřazené události, můžete během profilace zavřít další operace náročné na disk a procesor. Ukončením těchto operací může systém alokovat více prostředků na zpracová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: ETW prostředky 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 existuje konečný počet ETW relací pro použití, a pokud se už všechny relace používají, zobrazí se následující chyba: ETW resources have been exhausted Tyto sezení jsou používány jinými programy, jako je sada nástrojů SysInternals, profilátory a 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

  • Nastavte další prostředky spuštěním následujícího příkazu v příkazovém řádku se zvýšenými oprávněními a poté restartujte systém.

    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í profilových vzorků pomocí Trasování událostí pro Windows pro ARM64 aktuálně není podporováno v případě běhu 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 s .NET 7 a .NET Runtime 8.0.0-8.0.1 s povoleným serverovým GC.

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

Tento problém můžete vyřešit takto:

  • 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 nedotčenou verzi .NET modulu runtime.

Viz také: