Delen via


De kans verhogen dat een prestatieprobleem wordt opgelost

Het hulpprogramma 'Een probleem melden' wordt veel gebruikt door Visual Studio-gebruikers om een aantal problemen te melden. Het Visual Studio-team ziet crash- en traagheidstrends in feedback van gebruikers en lost problemen op die van invloed zijn op een brede groep gebruikers. Hoe praktischer een specifiek feedbackticket is, hoe waarschijnlijker het is dat het door het productteam wordt diagnosticeerd en opgelost. In dit document worden de beste praktijken beschreven voor het melden van problemen met vastlopen of traagheid, zodat ze effectiever kunnen worden aangepakt.

Algemene aanbevolen procedures

Visual Studio is een groot, complex platform dat ondersteuning biedt voor een groot aantal talen, projecttypen, platforms en meer. Hoe het presteert, is een functie van welke onderdelen worden geïnstalleerd en actief zijn in een sessie, de geïnstalleerde extensies, de Visual Studio-instellingen, de computerconfiguratie en ten slotte de vorm van de code die wordt bewerkt. Gezien het aantal variabelen is het moeilijk om te zien of het probleemrapport van de ene gebruiker hetzelfde onderliggende probleem heeft als een probleemrapport van een andere gebruiker, ook al is het zichtbare symptoom hetzelfde. Hier zijn enkele beste praktijken om te zorgen dat uw specifieke probleemrapport een grotere kans heeft om gediagnosticeerd te worden.

Zo specifiek mogelijk een titel opgeven

Zoek naar duidelijke kenmerken voor het probleem dat wordt gemeld en neem zoveel mogelijk op in de titel. Als de titel beschrijvend is, is het minder waarschijnlijk dat gebruikers met niet-gerelateerde problemen (maar hetzelfde oppervlakkige symptoom) stemmen of commentaar geven op uw ticket, waardoor de diagnose van uw probleem moeilijker wordt.

Wanneer u twijfelt, moet u een nieuw probleemrapport vastleggen

Veel problemen hebben mogelijk geen onderscheidend kenmerk of stappen om te herhalen. In dergelijke gevallen is een nieuw verslag beter dan een upvote of een opmerking over een ander rapport, dat een vergelijkbaar uiterlijk symptoomrapporteert. Voeg, afhankelijk van het type rapport, aanvullende diagnostische bestanden toe aan uw rapport, zoals verderop in dit document wordt beschreven.

probleemspecifieke beste methoden

Hieronder worden problemen beschreven die moeilijk te diagnosticeren zijn zonder goede diagnostische bestanden. Nadat u de case hebt geïdentificeerd waarin uw probleem het beste wordt beschreven, volgt u de feedbackstappen die specifiek zijn voor dat geval.

Crashes

Er treedt een crash op wanneer het proces (Visual Studio) onverwacht wordt beëindigd.

rechtstreeks reproduceerbare crashes

Direct reproduceerbare crashes zijn gevallen met alle volgende kenmerken:

  • Kan worden waargenomen door een bekende set stappen te volgen

  • Kan worden waargenomen op meerdere computers (indien beschikbaar)

  • Kan worden gereproduceerd in voorbeeldcode of een project dat kan worden gekoppeld aan of verstrekt als onderdeel van de feedback (als de stappen betrekking hebben op het openen van een project of document)

Volg voor deze problemen de stappen in 'Een probleem melden' en zorg ervoor dat u het volgende opneemt:

  • De stappen voor het reproduceren van het probleem

  • Een zelfstandig reproproject zoals hierboven beschreven. Als zelfstandige repro niet mogelijk is, neemt u het volgende op:

    • De taal van de geopende projecten (C#, C++, enzovoort)

    • Het type project (consoletoepassing, ASP.NET, enzovoort)

Notitie

Meest waardevolle feedback: Voor dit geval is de meest waardevolle feedback de set stappen om het probleem samen met voorbeeldbroncode te reproduceren.

onbekende crashes

Als u niet zeker weet wat uw crashes veroorzaken of ze willekeurig lijken, kunt u dumps lokaal vastleggen telkens wanneer Visual Studio vastloopt en deze koppelen aan afzonderlijke feedback-items. Als u dumps lokaal wilt opslaan wanneer Visual Studio vastloopt, voert u de volgende opdrachten uit in een beheerdersopdrachtvenster:

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"

Pas het aantal dumps en de dumpmap naar wens aan. Meer informatie over deze instellingen hier.

Notitie

Dumps die zijn vastgelegd met Taakbeheer hebben waarschijnlijk het verkeerde aantal bits, waardoor ze minder bruikbaar zijn. De hierboven beschreven procedure is de voorkeurswijze voor het vastleggen van een heapdump. Als u Taakbeheer wilt gebruiken, sluit u het exemplaar dat momenteel wordt uitgevoerd, start u taakbeheer (%windir%\syswow64\taskmgr.exe) met 32 bits en verzamelt u daar een heapdump.

Notitie

Elk dumpbestand dat door deze methode wordt geproduceerd, is maximaal 4 GB groot. Zorg ervoor dat u DumpFolder instelt op een locatie met voldoende schijfruimte of de DumpCount op de juiste manier aanpast.

Telkens wanneer Visual Studio vastloopt, wordt er een dumpbestand devenv.exegemaakt. [getal].dmp bestand op de geconfigureerde locatie.

Gebruik vervolgens de functie 'Een probleem melden...' in Visual Studio. Hiermee kunt u de juiste dump aan een bestand koppelen.

  1. Zoek het dumpbestand voor de crash die u rapporteert (zoek naar een bestand met de juiste aanmaaktijd)

  2. Zip indien mogelijk het bestand (*.zip) om de grootte te verkleinen voordat u feedback indient

  3. Volg de stappen in 'Een probleem melden' en voeg de heapdump toe aan een nieuw feedbackitem.

Notitie

Meest waardevolle feedback: Voor dit geval is de meest waardevolle feedback de heap dump die is vastgelegd op het moment van de crash.

Niet reageren

VS reageert gedurende een langere periode niet meer.

Direct reproduceerbare onresponsiviteit

Zoals beschreven in de bijbehorende sectie over crashes, voor problemen die eenvoudig kunnen worden gereproduceerd, gezien op meerdere computers en kan worden gedemonstreerd in een kleine steekproef, zijn de meest waardevolle feedbackrapporten die stappen bevatten om het probleem te reproduceren en voorbeeldbroncode op te nemen die het probleem demonstreert.

onbekende niet-reagerende

Als een onresponsiviteit zich onvoorspelbaar manifesteert, start u de volgende keer een nieuw exemplaar van Visual Studio en meldt u een probleem vanuit dat exemplaar. Selecteer in het scherm Record de Visual Studio-sessie die niet reageert. (Zie stap 8 op het Een probleem melden pagina voor meer informatie over het vastleggen van acties die we kunnen volgen om het probleem te reproduceren.)

Als het Visual Studio-exemplaar dat niet reageert, is gestart in de beheerdersmodus, moet het tweede exemplaar ook worden gestart in de beheerdersmodus.

Notitie

Meest waardevolle feedback: Voor dit geval is de meest waardevolle feedback de heap dump die is vastgelegd op het moment van de onresponsiviteit.

Traagheid en problemen met hoog CPU-gebruik

Wat een probleem met traagheid of hoog CPU-gebruik het meest oplossingsgericht maakt, is een prestatieanalyse die wordt vastgelegd terwijl de trage bewerking of hoge CPU-gebeurtenis plaatsvindt.

Notitie

Isoleer indien mogelijk elk scenario in een afzonderlijk, specifiek feedbackrapport. Als typen en navigatie bijvoorbeeld traag zijn, volgt u de onderstaande stappen één keer per probleem. Dit helpt het productteam de oorzaak van specifieke problemen te isoleren.

Voor de beste resultaten bij het vastleggen van de prestaties voert u de volgende stappen uit:

  1. Als Visual Studio nog niet wordt uitgevoerd, open dan een kopie van Visual Studio om het probleem te reproduceren.

    • Zorg ervoor dat alles is ingesteld om het probleem opnieuw te creëren. Als u bijvoorbeeld een bepaald project wilt laden met een specifiek bestand dat is geopend, moet u ervoor zorgen dat beide stappen zijn voltooid voordat u doorgaat.

    • Als u geen een probleem meldt dat specifiek is voor het laden van een oplossing, wacht u 5-10 minuten (of meer, afhankelijk van de grootte van de oplossing) nadat u de oplossing hebt geopend voordat u de prestatietracering opneemt. Het laadproces van de oplossing produceert een grote hoeveelheid gegevens, dus door een paar minuten te wachten, kunnen we ons concentreren op het specifieke probleem dat u rapporteert.

  2. Start een tweede exemplaar van Visual Studio zonder dat er een oplossing is geopend

  3. Open in de nieuwe kopie van Visual Studio het hulpprogramma Een probleem melden

  4. Volg de stappen in Een probleem melden totdat u bij de stap 'Geef een trace en heapdump (optioneel)' hebt bereikt.

  5. Kies ervoor om de eerste kopie van Visual Studio (het probleem met de prestaties) op te nemen en de opname te starten.

    • De applicatie Steps Recorder verschijnt en begint met opnemen.

    • Tijdens de opname de problematische actie uitvoeren in het eerste exemplaar van Visual Studio. Het is moeilijk voor ons om specifieke prestatieproblemen op te lossen als ze niet binnen de vastgelegde tijd worden weergegeven.

    • Als de actie korter is dan 30 seconden en eenvoudig kan worden herhaald, herhaalt u de actie om het probleem verder te demonstreren.

    • In de meeste gevallen is een tracering van 60 seconden voldoende om de problemen te demonstreren, met name als de problematische actie langer dan 30 seconden duurde (of herhaald). De duur kan zo nodig worden aangepast om het gedrag vast te leggen dat u wilt vaststellen.

  6. Klik op "Stop recorden" in Stappenrecorder zodra de trage bewerking of een hoge CPU-gebeurtenis die u wilt rapporteren is voltooid. Het kan enkele minuten duren voordat de prestatietracering is verwerkt.

  7. Zodra dit is voltooid, worden er verschillende bijlagen aan uw feedback toegevoegd. Voeg eventuele extra bestanden toe waarmee het probleem kan worden gereproduceerd (een voorbeeldproject, schermopnamen, video's, enzovoort).

  8. Dien de feedback in.

Tijdens het vastleggen van een prestatietracering, als de trage bewerking of het hoge CPU-gebruik dat u rapporteert aan een einde komt, stopt u de opname onmiddellijk. Als er te veel informatie wordt verzameld, wordt de oudste informatie overschreven. Als de tracering niet snel (binnen een paar seconden) na de interessante bewerking wordt gestopt, worden nuttige traceringsgegevens overschreven.

Koppel geen prestatietraceringen rechtstreeks aan bestaande feedbackitems op de website van de Ontwikkelaarscommunity. Het aanvragen/verstrekken van aanvullende informatie is een ondersteunde workflow in de ingebouwde "Probleem melden"-tool van Visual Studio. Als een prestatietracering is vereist om een eerder feedbackitem op te lossen, stellen we de status van het feedbackitem in op 'Meer informatie nodig', waarop kan worden gereageerd op dezelfde manier als het melden van een nieuw probleem. Raadpleeg sectie 'Meer informatie nodig' in het document van de tool 'Probleem melden' voor gedetailleerde instructies.

Notitie

Meest waardevolle feedback: Voor bijna alle traagheid/hoge CPU-problemen is de meest waardevolle feedback een beschrijving op hoog niveau van wat u probeerde te doen, samen met de prestatietracering (*.etl.zip) die het gedrag tijdens die tijd vastlegt.

Geavanceerde prestatietraceringen

Mogelijkheden voor traceringsverzameling in het hulpprogramma Rapport-a-probleem zijn voldoende voor de meeste scenario's. Maar er zijn momenten waarop meer controle over traceringsverzameling nodig is (bijvoorbeeld tracering met een grotere buffergrootte), in welk geval PerfView een uitstekend hulpmiddel is om te gebruiken. Stappen voor het handmatig vastleggen van prestatietracering met behulp van het hulpprogramma PerfView vindt u op de pagina Prestatietraceringen opnemen met PerfView.

UitschakelenOf-Process problemen

Notitie

Vanaf Visual Studio 2019 versie 16.3 worden out-of-process-logboeken automatisch gekoppeld aan feedback die wordt verzonden met behulp van het hulpprogramma Een probleem melden. Als het probleem echter rechtstreeks kan worden gereproduceerd, kunt u met de onderstaande stappen nog steeds aanvullende informatie toevoegen om het probleem beter te diagnosticeren.

Er zijn een aantal satellietprocessen die parallel met Visual Studio worden uitgevoerd en verschillende functies bieden van buiten het belangrijkste Visual Studio-proces. Als er een fout optreedt in een van deze satellietprocessen, wordt deze meestal aan de zijde van Visual Studio gezien als een StreamJsonRpc.RemoteInvocationException of een StreamJsonRpc.ConnectionLostException.

Wat dit soort problemen het meest uitvoerbaar maakt, is om aanvullende logboeken te bieden die kunnen worden verzameld door de volgende stappen uit te voeren:

  1. Als dit een rechtstreeks reproduceerbaar probleem is, verwijdert u eerst de %temp%/servicehub/logs map. Als u dit probleem niet kunt reproduceren, houdt u deze map intact en negeert u de volgende opsommingstekens:

    • Stel de globale omgevingsvariabele ServiceHubTraceLevel in op Alle
    • Reproduceer het probleem.
  2. Download het Hulpprogramma voor logboekverzameling van Microsoft Visual Studio en .NET Framework hier.

  3. Voer het hulpprogramma uit. Hiermee wordt een zip-bestand uitgevoerd naar %temp%/vslogs.zip. Voeg dat bestand toe aan uw feedback.