Aumentare le probabilità di correzione di un problema di prestazioni

Lo strumento "Segnala un problema" viene ampiamente usato dagli utenti di Visual Studio per segnalare una serie di problemi. Il team di Visual Studio individua le tendenze di arresto anomalo e lentezza nei commenti e suggerimenti degli utenti e risolve i problemi che influisce su una vasta gamma di utenti. Maggiore è l'azione di un ticket di feedback specifico, maggiore sarà la probabilità che venga diagnosticata e risolta rapidamente dal team del prodotto. Questo documento descrive le procedure consigliate durante la segnalazione di problemi di arresto anomalo o lentezza per renderli più interattivi.

Procedure consigliate generali

Visual Studio è una piattaforma complessa di grandi dimensioni che supporta numerosi linguaggi, tipi di progetto, piattaforme e altro ancora. La modalità di esecuzione è una funzione dei componenti installati e attivi in una sessione, delle estensioni installate, delle impostazioni di Visual Studio, della configurazione del computer e infine della forma del codice da modificare. Dato il numero di variabili, è difficile stabilire se il report del problema di un utente ha lo stesso problema sottostante di un report del problema da un altro utente, anche se il sintomo visibile è lo stesso. Dato che, di seguito sono riportate alcune procedure consigliate per garantire che la segnalazione di problemi specifici abbia una maggiore probabilità di essere diagnosticata.

Specificare un titolo il più possibile specifico

Cercare firme distinte per il problema segnalato e includere il più possibile nel titolo. Se il titolo è descrittivo, è meno probabile che gli utenti con problemi non correlati (ma stesso sintomo superficiale) voteranno o commenteranno il biglietto, rendendo così più difficile la diagnosi del problema .

In caso di dubbi, registrare una nuova segnalazione del problema

Molti problemi potrebbero non avere alcuna firma distintiva o passaggi da riprodurre. In questi casi, un nuovo report è migliore di un upvote o di un commento su un altro report, che segnala un sintomo esterno simile. A seconda del tipo di report, includere file di diagnostica aggiuntivi per il report, come descritto più avanti in questo documento.

Procedure consigliate specifiche per i problemi

Di seguito sono descritti i problemi difficili da diagnosticare senza file di diagnostica validi. Dopo aver identificato il caso che descrive meglio il problema, seguire i passaggi di feedback specifici per tale caso.

Crashes

Si verifica un arresto anomalo quando il processo (Visual Studio) termina in modo imprevisto.

Arresti anomali riproducibili direttamente

Gli arresti anomali riproducibili direttamente sono casi con tutte le caratteristiche seguenti:

  • È possibile osservare seguendo un set noto di passaggi

  • Può essere osservato su più computer (se disponibile)

  • Può essere riprodotto nel codice di esempio o in un progetto che può essere collegato o fornito come parte del feedback (se i passaggi implicano l'apertura di un progetto o di un documento)

Per questi problemi, seguire la procedura descritta in "Come segnalare un problema" e assicurarsi di includere:

  • Passaggi per riprodurre il problema

  • Progetto di riproduzione autonomo come descritto in precedenza. Se non è possibile eseguire la riproduzione autonoma, includere:

    • Linguaggio dei progetti aperti (C#, C++e così via)

    • Tipo di progetto (applicazione console, ASP.NET e così via)

Nota

Feedback più prezioso: per questo caso, il feedback più prezioso è il set di passaggi per riprodurre il problema insieme al codice sorgente di esempio.

Arresti anomali sconosciuti

Se non si è certi di ciò che causa gli arresti anomali o sembrano casuali, è possibile acquisire i dump in locale ogni volta che Visual Studio si arresta in modo anomalo e allegarli a elementi di feedback separati. Per salvare i dump in locale quando Visual Studio si arresta in modo anomalo, eseguire i comandi seguenti in una finestra di comando dell'amministratore:

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"

Personalizzare il numero di dump e la cartella dump in base alle esigenze. Altre informazioni su queste impostazioni sono disponibili qui.

Nota

È probabile che i dump acquisiti con Gestione attività siano di bit errato, rendendoli meno utilizzabili. La procedura descritta in precedenza è il modo preferito per acquisire un dump dell'heap. Se si vuole usare Gestione attività, chiudere quello attualmente in esecuzione, avviare Gestione attività a 32 bit (%windir%\syswow64\taskmgr.exe) e raccogliere un dump dell'heap da questa posizione.

Nota

Ogni file di dump prodotto da questo metodo sarà di dimensioni fino a 4 GB. Assicurarsi di impostare DumpFolder su una posizione con spazio su unità adeguato o regolare il DumpCount in modo appropriato.

Ogni volta che Visual Studio si arresta in modo anomalo, verrà creato un file di dump devenv.exe.[ file number].dmp nel percorso configurato.

Usare quindi "Segnala un problema" di Visual Studio Funzionalità. Consente di allegare il dump appropriato.

  1. Individuare il file di dump per l'arresto anomalo segnalato (cercare un file con l'ora di creazione corretta)

  2. Se possibile, comprimere il file (*.zip) per ridurne le dimensioni prima di inviare commenti e suggerimenti

  3. Seguire i passaggi descritti in "Come segnalare un problema" e allegare il dump dell'heap a un nuovo elemento di feedback.

Nota

Feedback più prezioso: per questo caso, il feedback più prezioso è il dump dell'heap acquisito al momento dell'arresto anomalo.

Apatia

Visual Studio non risponde per un lungo periodo di tempo.

Mancata risposta diretta

Come descritto nella sezione corrispondente sugli arresti anomali, per i problemi che possono essere facilmente riprodotti, visualizzati in più computer e possono essere illustrati in un piccolo esempio, i report di feedback più importanti sono quelli che includono i passaggi per riprodurre il problema e includere il codice sorgente di esempio che illustra il problema.

Mancata risposta sconosciuta

Se una mancata risposta si manifesta in modo imprevedibile, all'occorrenza successiva avviare una nuova istanza di Visual Studio e segnalare un problema da tale istanza. Nella schermata "Registra" assicurarsi di selezionare la sessione di Visual Studio che non risponde. Per altre informazioni su come registrare le azioni che è possibile seguire per riprodurre il problema, vedere Passaggio 8 nel Come segnalare una pagina del problema .

Se l'istanza di Visual Studio che non risponde è stata avviata in modalità Amministrazione istrator, la seconda istanza deve essere avviata anche in modalità Amministrazione istrator.

Nota

Feedback più prezioso: per questo caso, il feedback più prezioso è il dump dell'heap acquisito al momento dell'annullamento della risposta.

Lentezza e problemi di CPU elevata

Ciò che rende un problema di rallentamento o utilizzo elevato della CPU è un'analisi delle prestazioni acquisita mentre l'operazione lenta o un evento elevato della CPU è in corso.

Nota

Quando possibile, isolare ogni scenario in un report di feedback separato e specifico. Ad esempio, se la digitazione e lo spostamento sono entrambi lenti, seguire la procedura seguente una volta per ogni problema. In questo modo il team del prodotto isola la causa di problemi specifici.

Per ottenere risultati ottimali nell'acquisizione delle prestazioni, seguire questa procedura:

  1. Se non è già in esecuzione, è aperta una copia di Visual Studio in cui si riprodurrà il problema

    • Impostare tutto per riprodurre il problema. Ad esempio, se è necessario caricare un determinato progetto con un file specifico aperto, assicurarsi che entrambi i passaggi siano completati prima di procedere.

    • Se non si segnala un problema specifico per il caricamento di una soluzione, provare ad attendere 5-10 minuti (o più, a seconda delle dimensioni della soluzione) dopo aver aperto la soluzione prima di registrare la traccia delle prestazioni. Il processo di caricamento della soluzione produce una grande quantità di dati, quindi l'attesa di alcuni minuti consente di concentrarsi sul problema specifico che si stanno segnalando.

  2. Avviare una seconda copia di Visual Studio senza soluzione aperta

  3. Nella nuova copia di Visual Studio aprire lo strumento Segnala un problema

  4. Seguire i passaggi descritti in Come segnalare un problema fino a quando non si raggiunge il passaggio "Fornire una traccia e un dump dell'heap (facoltativo)".

  5. Scegliere di registrare la prima copia di Visual Studio (quella che rileva un problema di prestazioni) e avviare la registrazione.

    • L'applicazione Registrazione passaggi verrà visualizzata e inizierà la registrazione.

    • Durante la registrazione, eseguire l'azione problematica nella prima copia di Visual Studio. È difficile correggere problemi di prestazioni specifici se non vengono visualizzati entro il tempo registrato.

    • Se l'azione è inferiore a 30 secondi e può essere ripetuta facilmente, ripetere l'azione per illustrare ulteriormente il problema.

    • Per la maggior parte dei casi, una traccia di 60 secondi è sufficiente per dimostrare i problemi, soprattutto se l'azione problematica è durata (o è stata ripetuta) per più di 30 secondi. La durata può essere modificata in base alle esigenze per acquisire il comportamento che si desidera fissare.

  6. Fare clic su "Arresta record" in Registrazione passaggi non appena l'operazione lenta o l'evento cpu elevato che si vuole segnalare è terminato. L'elaborazione della traccia delle prestazioni può richiedere alcuni minuti.

  7. Al termine, ci saranno diversi allegati ai commenti e suggerimenti. Allegare eventuali file aggiuntivi che possono contribuire a riprodurre il problema (un progetto di esempio, screenshot, video e così via).

  8. Inviare il feedback.

Durante la registrazione di una traccia delle prestazioni, se l'operazione lenta o la CPU elevata che si sta segnalando arriva a un termine, arrestare immediatamente la registrazione. Se vengono raccolte troppe informazioni, le informazioni meno recenti vengono sovrascritte. Se la traccia non viene arrestata presto (entro pochi secondi) dopo l'operazione interessante, i dati di traccia utili verranno sovrascritti.

Non allegare direttamente le tracce delle prestazioni agli elementi di feedback esistenti nel sito Web della community degli sviluppatori. La richiesta o la fornitura di informazioni aggiuntive è un flusso di lavoro supportato nello strumento predefinito Segnala un problema di Visual Studio. Se è necessaria una traccia delle prestazioni per risolvere un elemento di feedback precedente, verrà impostato lo stato dell'elemento di feedback su "Need More Info", che può essere risposto allo stesso modo di segnalare un nuovo problema. Per istruzioni dettagliate, fare riferimento alla sezione "Serve altre informazioni" nel documento Segnala un problema dello strumento.

Nota

Feedback più prezioso: per quasi tutti i problemi di lentezza/utilizzo elevato della CPU, il feedback più prezioso è una descrizione generale di ciò che si stava tentando di eseguire, insieme alla traccia delle prestazioni (*.etl.zip) che acquisisce il comportamento durante tale periodo.

Tracce avanzate delle prestazioni

Le funzionalità di raccolta di tracce nello strumento Report-a-problem sono sufficienti per la maggior parte degli scenari. Tuttavia, in alcuni casi è necessario un maggiore controllo sulla raccolta di tracce (ad esempio, traccia con dimensioni del buffer maggiori), nel qual caso PerfView è un ottimo strumento da usare. I passaggi per registrare manualmente la traccia delle prestazioni usando lo strumento PerfView sono disponibili nella pagina Registrazione delle tracce delle prestazioni con PerfView .

Problemi di out-of-process

Nota

A partire da Visual Studio 2019 versione 16.3, i log out-of-process vengono allegati automaticamente ai commenti e suggerimenti inviati usando lo strumento Segnala un problema. Tuttavia, se il problema è riproducibile direttamente, seguire la procedura seguente potrebbe comunque contribuire ad aggiungere informazioni aggiuntive per facilitare la diagnosi del problema.

Esistono diversi processi satellite che vengono eseguiti in parallelo a Visual Studio e forniscono diverse funzionalità dall'esterno del processo principale di Visual Studio. Se si verifica un errore in uno di questi processi satellite, in genere viene visualizzato sul lato di Visual Studio come "StreamJsonRpc.RemoteInvocationException" o "StreamJsonRpc". Connessione ionLostException'.

Ciò che rende questi tipi di problemi più interattivi consiste nel fornire log aggiuntivi che possono essere raccolti seguendo questa procedura:

  1. Se si tratta di un problema riproducibile direttamente, iniziare eliminando la cartella %temp%/servicehub/logs . Se non è possibile riprodurre questo problema, mantenere intatta questa cartella e ignorare i punti elenco seguenti:

    • Impostare la variabile di ambiente globale ServiceHubTraceLevel su All
    • Riprodurre il problema.
  2. Scaricare lo strumento raccolta log di Microsoft Visual Studio e .NET Framework qui.

  3. Eseguire lo strumento. In questo modo viene restituito un file ZIP in %temp%/vslogs.zip. Allegare il file al feedback.