Zvýšení pravděpodobnosti vyřešení problému s výkonem

Nástroj Nahlásit problém běžně používají uživatelé sady Visual Studio k hlášení řady problémů. Tým sady Visual Studio v zpětné vazbě uživatelů zaozoruje na chyby a zpomalení a řeší problémy, které mají vliv na širokou škálu uživatelů. Čím je vhodnější konkrétní lístek zpětné vazby, tím pravděpodobnější je, že se diagnostikuje a rychle vyřeší produktovým týmem. Tento dokument popisuje osvědčené postupy při hlášení problémů s chybou nebo zpomalením, aby se daly lépe reagovat.

Obecné osvědčené postupy

Visual Studio je velká a složitá platforma, která podporuje velké množství jazyků, typů projektů, platforem a dalších. Jak to funguje, je funkce, ze které jsou součásti nainstalované a aktivní v relaci, nainstalované rozšíření, nastavení sady Visual Studio, konfigurace počítače a nakonec tvar upravovaného kódu. Vzhledem k počtu proměnných je obtížné zjistit, jestli má zpráva o problému od jednoho uživatele stejný základní problém jako zpráva o problému od jiného uživatele, i když je viditelný příznak stejný. Vzhledem k tomu, že tady je několik osvědčených postupů pro zajištění vyšší pravděpodobnosti diagnostiky konkrétní sestavy problémů.

Zadejte co nejvíce konkrétní název.

Vyhledejte jedinečné podpisy pro nahlášený problém a do názvu uveďte co nejvíce. Pokud je název popisný, je méně pravděpodobné, že uživatelé s nesouvisejícími problémy (ale se stejnými povrchními příznaky) budou hlasovat nebo komentovat váš lístek, a tím znesnadní diagnostiku vašeho problému.

V případě pochybností zaznamte novou zprávu o problému.

Mnoho problémů nemusí mít žádný výrazný podpis ani kroky k reprodukci. V takových případech je nová sestava lepší než upvote nebo komentář k jiné sestavě, která hlásí podobný vnější příznak. V závislosti na typu sestavy zahrňte do sestavy další diagnostické soubory, jak je popsáno dále v tomto dokumentu.

Osvědčené postupy specifické pro konkrétní problémy

Níže jsou popsané problémy, které je obtížné diagnostikovat bez dobrých diagnostických souborů. Po identifikaci případu, který nejlépe popisuje váš problém, postupujte podle kroků pro zpětnou vazbu, které jsou specifické pro tento případ.

Pády

K chybě dojde, když se proces (Visual Studio) neočekávaně ukončí.

Přímé reprodukovatelné chybové ukončení

Přímo reprodukovatelné chybové ukončení jsou případy, které mají všechny následující vlastnosti:

  • Můžete ho sledovat pomocí známé sady kroků.

  • Je možné sledovat na více počítačích (pokud je k dispozici)

  • Dá se reprodukovat v ukázkovém kódu nebo projektu, který je možné propojit nebo poskytnout jako součást zpětné vazby (pokud kroky zahrnují otevření projektu nebo dokumentu).

V případě těchto problémů postupujte podle kroků v části Jak nahlásit problém a nezapomeňte zahrnout:

  • Kroky pro reprodukci problému

  • Samostatný projekt pro reprodukci, jak je popsáno výše. Pokud samostatné opakování není možné, uveďte následující:

    • Jazyk otevřených projektů (C#, C++atd.)

    • Druh projektu (konzolová aplikace, ASP.NET atd.)

Poznámka:

Nejcennější zpětná vazba: V tomto případě je nejcennější zpětnou vazbou sada kroků pro reprodukci problému spolu s ukázkovým zdrojovým kódem.

Neznámé chybové ukončení

Pokud si nejste jistí, co způsobuje chybové ukončení nebo se zdají být náhodné, můžete při každém chybovém ukončení sady Visual Studio zachytit výpisy paměti a připojit je k samostatným položkám zpětné vazby. Pokud chcete výpisy paměti uložit místně, když dojde k chybovému ukončení sady Visual Studio, spusťte v příkazovém okně správce následující příkazy:

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe" /v DumpType /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe" /v DumpCount /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\devenv.exe" /v DumpFolder /t REG_SZ /d "C:\CrashDumps"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService32.exe" /v DumpType /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService32.exe" /v DumpCount /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService32.exe" /v DumpFolder /t REG_SZ /d "C:\CrashDumps"

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService.exe" /v DumpType /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService.exe" /v DumpCount /t REG_DWORD /d 2
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps\ServiceHub.RoslynCodeAnalysisService.exe" /v DumpFolder /t REG_SZ /d "C:\CrashDumps"

Podle potřeby upravte počet výpisů paměti a složku výpisu paměti. Další informace o těchto nastaveních najdete tady.

Poznámka:

Výpisy paměti zachycené pomocí Správce úloh pravděpodobně budou mít nesprávnou bitovou verzi, což je méně použitelné. Výše popsaný postup je upřednostňovaným způsobem zachycení výpisu haldy. Pokud chcete použít Správce úloh, zavřete ten, který je aktuálně spuštěný, spusťte 32bitový správce úloh (%windir%\syswow64\taskmgr.exe) a shromážděte výpis haldy odtud.

Poznámka:

Každý soubor výpisu paměti vytvořený touto metodou bude mít velikost až 4 GB. Nezapomeňte nastavit DumpFolder na místo s odpovídajícím místem na disku nebo odpovídajícím způsobem upravit dumpCount.

Při každém chybovém ukončení sady Visual Studio se vytvoří soubor s výpisem paměti devenv.exe.[ number].dmp file in the configured location.

Pak použijte sadu Visual Studio "Nahlásit problém..." Funkce. Umožní vám připojit odpovídající výpis paměti.

  1. Vyhledejte soubor s výpisem stavu systému pro chybové ukončení, které hlásíte (vyhledejte soubor se správným časem vytvoření).

  2. Pokud je to možné, zazipujte soubor (*.zip) a před odesláním zpětné vazby zmenšete jeho velikost.

  3. Postupujte podle kroků v části Jak nahlásit problém a připojte výpis haldy k nové položce zpětné vazby.

Poznámka:

Nejhodnotnější zpětná vazba: V tomto případě je nejcennější zpětná vazba výpisu haldy zachycená v době chybového ukončení.

Nereagující

VS přestane reagovat po delší dobu.

Přímo reprodukovatelná nereagovatelnost

Jak je popsáno v příslušné části o chybách, pro problémy, které lze snadno reprodukovat, vidět na více počítačích a lze je demonstrovat v malé ukázce, nejhodnotnější sestavy zpětné vazby jsou ty, které zahrnují kroky pro reprodukci problému, a zahrnout ukázkový zdrojový kód, který ukazuje problém.

Neznámá nereagujícíness

Pokud se nereagující úplnost projevuje nepředvídatelným způsobem, na dalším výskytu spusťte novou instanci sady Visual Studio a nahlašte problém z této instance. Na obrazovce Záznam nezapomeňte vybrat relaci sady Visual Studio, která nereaguje. (Další informace o tom, jak zaznamenávat akce, které můžeme použít k reprodukci problému, najdete v kroku 8 na stránce Jak nahlásit stránku problému .)

Pokud byla instance sady Visual Studio, která nereaguje, spuštěna v režimu Správa istrator, bude potřeba spustit druhou instanci také v režimu Správa istratoru.

Poznámka:

Nejhodnotnější zpětná vazba: V tomto případě je nejužitečnější zpětná vazba výpis paměti haldy zachycená v době nereagování.

Problémy s pomalým výkonem a vysokým využitím procesoru

Co způsobuje, že problém s pomalým nebo vysokým využitím procesoru je nejvýkonnější, je trasování výkonu zachycené během pomalé operace nebo vysoké události procesoru.

Poznámka:

Pokud je to možné, izolujte jednotlivé scénáře v samostatné, konkrétní sestavě zpětné vazby. Pokud jsou například psaní a navigace pomalé, postupujte jednou podle následujících kroků pro každý problém. To pomáhá produktovému týmu izolovat příčinu konkrétních problémů.

Nejlepších výsledků při zachytávání výkonu dosáhnete takto:

  1. Pokud ještě není spuštěný, otevřete kopii sady Visual Studio, kde problém reprodukujete.

    • Máte všechno nastavené pro reprodukci problému. Pokud například potřebujete, aby se konkrétní projekt načetl s určitým otevřeným souborem, před pokračováním se ujistěte, že jsou oba tyto kroky dokončené.

    • Pokud nehlásíte problém specifický pro načtení řešení, zkuste počkat 5 až 10 minut (nebo déle, v závislosti na velikosti řešení) po otevření řešení před záznamem trasování výkonu. Proces načítání řešení vytváří velké množství dat, takže čekání na několik minut nám pomůže zaměřit se na konkrétní problém, který hlásíte.

  2. Spuštění druhé kopie sady Visual Studio bez otevřeného řešení

  3. V nové kopii sady Visual Studio otevřete nástroj Nahlásit problém .

  4. Postupujte podle kroků v části Jak nahlásit problém , dokud se nedostanete na krok Poskytnout výpis stavu trasování a haldy (volitelné).

  5. Zvolte, že chcete nahrát první kopii sady Visual Studio (problém s výkonem) a spustit nahrávání.

    • Zobrazí se aplikace Steps Recorder a zahájí nahrávání.

    • Během nahrávání proveďte problematickou akci v první kopii sady Visual Studio. Je obtížné opravit konkrétní problémy s výkonem, pokud se nezobrazují v zaznamenaném čase.

    • Pokud je akce kratší než 30 sekund a dá se snadno opakovat, opakujte akci, abyste problém dále ukázali.

    • Ve většině případů je stopa 60 sekund dostačující k předvedení problémů, zejména pokud problematická akce trvala (nebo se opakovala) déle než 30 sekund. Dobu trvání je možné upravit podle potřeby tak, aby zachytila chování, které byste chtěli opravit.

  6. Po dokončení pomalé operace nebo vysoké události procesoru, kterou chcete nahlásit, klikněte v nástroji Steps Recorder na tlačítko Zastavit záznam. Zpracování trasování výkonu může trvat několik minut.

  7. Po dokončení bude vaše zpětná vazba obsahovat několik příloh. Připojte všechny další soubory, které vám můžou pomoct problém reprodukovat (ukázkový projekt, snímky obrazovky, videa atd.).

  8. Odešlete zpětnou vazbu.

Při záznamu trasování výkonu dojde k ukončení pomalé operace nebo vysokého využití procesoru, které hlásíte, a záznam okamžitě zastavíte. Pokud se shromažďuje příliš mnoho informací, nejstarší informace se přepíšou. Pokud trasování není brzy zastaveno (během několika sekund) po zajímavé operaci, užitečné trasovací data se přepíšou.

Nepřipojte přímo trasování výkonu k existujícím položkám zpětné vazby na webu komunity vývojářů. Žádost o další informace je podporovaným pracovním postupem v integrovaném nástroji Nahlásit problém v sadě Visual Studio. Pokud se k vyřešení předchozí položky zpětné vazby vyžaduje trasování výkonu, nastavíme stav položky zpětné vazby na "Potřebujete další informace", na které můžete odpovědět stejným způsobem jako na hlášení nového problému. Podrobné pokyny najdete v části "Potřebuji další informace" v dokumentu o nahlášení problému.

Poznámka:

Nejhodnotnější zpětná vazba: Pro téměř všechny problémy s pomalým/vysokým využitím procesoru je nejdůležitější popis toho, co jste se snažili udělat, spolu s trasováním výkonu (*.etl.zip), který zachytává chování během této doby.

Pokročilé trasování výkonu

Funkce shromažďování trasování v nástroji Report-a-problem jsou dostatečné pro většinu scénářů. Existují ale případy, kdy je potřeba mít větší kontrolu nad shromažďováním trasování (například trasování s větší velikostí vyrovnávací paměti), v takovém případě je PerfView skvělým nástrojem pro použití. Postup ručního záznamu trasování výkonu pomocí nástroje PerfView najdete na stránce Záznam trasování výkonu pomocí nástroje PerfView .

Problémy se zastaralým procesem

Poznámka:

Od sady Visual Studio 2019 verze 16.3 se protokoly mimo proces automaticky připojují k zpětné vazbě odeslané pomocí nástroje Nahlásit problém. Pokud je ale problém přímo reprodukovatelný, můžete pomocí následujících kroků přidat další informace, které vám pomůžou lépe diagnostikovat problém.

Existuje řada satelitních procesů, které běží paralelně se sadou Visual Studio a poskytují různé funkce mimo hlavní proces sady Visual Studio. Pokud dojde k chybě v některém z těchto satelitních procesů, obvykle se na straně sady Visual Studio zobrazuje jako StreamJsonRpc.RemoteInvocationException nebo StreamJsonRpc. Připojení ionLostException'.

Díky těmto typům problémů je nejpohodnější poskytnout další protokoly, které je možné shromáždit pomocí následujících kroků:

  1. Pokud se jedná o přímo reprodukovatelný problém, začněte odstraněním složky %temp%/servicehub/logs . Pokud tento problém nemůžete reprodukovat, ponechte tuto složku beze změny a ignorujte následující odrážky:

    • Nastavení globální proměnné prostředí ServiceHubTraceLevel na vše
    • Reprodukujte problém.
  2. Stáhněte si microsoft Visual Studio a nástroj pro shromažďování protokolů rozhraní .NET Framework zde.

  3. Spusťte nástroj. Výstupem souboru ZIP je %temp%/vslogs.zip. Připojte tento soubor ke své zpětné vazbě.