Condividi tramite


Aumentare le probabilità di un problema di prestazioni risolto

Lo strumento "Segnalare un problema" è ampiamente usato dagli utenti di Visual Studio per segnalare una serie di problemi. Il team di Visual Studio individua le tendenze di crash e lentezza nel feedback degli utenti e risolve i problemi che influiscono su una vasta gamma di utenti. Più un ticket di feedback specifico è attuabile, maggiori saranno le possibilità che venga diagnosticato e risolto rapidamente dal team del prodotto. Questo documento descrive le procedure consigliate durante la segnalazione di problemi di arresto anomalo o lentezza per renderli più attuabili.

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

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) votino o commentino la tua segnalazione, rendendo così più difficile la diagnosi del tuo problema con il codice.

In caso di dubbi, registrare una nuova segnalazione dei problemi

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 simile verso l'esterno . A seconda del tipo di report, includere file di diagnostica aggiuntivi per il report, come descritto più avanti in questo documento.

Migliori prassi specifiche del problema

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.

Si blocca

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 i passaggi descritti 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, si prega di 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 dei dump in base alle esigenze. Altre informazioni su queste impostazioni qui.

Nota

È probabile che i dump acquisiti con Gestione Attività siano di bit errato, rendendoli meno utili. Il metodo preferito per acquisire un dump dell'heap è la procedura descritta in precedenza. Se si desidera utilizzare il Gestore attività, chiudere quello attualmente in esecuzione, avviare Gestore attività a 32 bit (%windir%\syswow64\taskmgr.exe) e raccogliere un heap dump da lì.

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, nel percorso configurato, un file di dump devenv.exe.[number].dmp.

Quindi, utilizza la funzione "Segnala un problema..." di Visual Studio. Ti permetterà di allegare il dump appropriato.

  1. Individua il file di dump per l'arresto anomalo per cui stai effettuando la segnalazione (cerca 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

il 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 direttamente riproducibile

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.

Assenza di 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 nella pagina Come segnalare un problema.

Se l'istanza di Visual Studio che non risponde è stata avviata in modalità amministratore, è necessario avviare anche la seconda istanza in modalità amministratore.

Nota

Feedback più prezioso: In questo caso, il feedback più prezioso è il dump dell'heap acquisito al momento della mancata reattività.

Lentezza e problemi di CPU elevata

Ciò che rende un problema di rallentamento o di utilizzo elevato della CPU più gestibile è il tracciamento delle prestazioni acquisito mentre l'operazione lenta o l'evento di elevato utilizzo 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, apri una copia di Visual Studio in cui riprodurrai il problema.

    • Preparare 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 segnalare 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. Avvia 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 raggiungere 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 che causa problemi 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 "Interrompi registrazione" nel Registratore dei passaggi non appena l'operazione lenta o l'evento ad alta CPU che si vuole segnalare è terminato. L'elaborazione della traccia delle prestazioni può richiedere alcuni minuti.

  7. Al termine, ci saranno diversi allegati al tuo feedback. 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 che si sta segnalando o l'uso elevato della CPU 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 un'operazione di interesse, 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, si prega di fare riferimento alla sezione "Ulteriori informazioni" nella sezione del documento "Segnala un problema".

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 fare, insieme alla traccia delle prestazioni (*.etl.zip) che acquisisce il comportamento durante tale periodo.

Tracciamenti delle Prestazioni Avanzate

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 relativi a 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.ConnectionLostException'.

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 /servicehub/logs%temp%. Se non riesci a riprodurre questo problema, lascia intatta questa cartella e ignora i punti elenco seguenti:

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

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