Risolvere gli errori di profilatura e risolvere i problemi
Questo articolo fornisce soluzioni per alcuni degli errori più comuni che possono impedire l'uso o il recupero di dati sufficienti dal Profiler prestazioni in Visual Studio.
Nessun risultato
Errore: "Nessun dato nel set corrente di filtri"
Quando si apre un file diagsession , vengono applicati determinati filtri, ad esempio nascondere il codice nativo o nascondere il codice non utente per semplificare la comprensione della traccia. Sono inoltre disponibili altri filtri che possono essere applicati, ad esempio la selezione dell'ora e il thread, che restringeno ulteriormente i dati visualizzati. Se questi filtri vengono applicati in modo che non siano presenti dati rimanenti da visualizzare, viene visualizzato questo avviso.
Come correggere
- Assicurarsi che la selezione dell'ora contenga dati. Se è stata modificata la selezione dell'ora nel grafico sopra i dati, selezionare Cancella selezione per reimpostarla.
- Quindi, se non sono ancora presenti dati, assicurarsi che tutte le categorie e i thread siano abilitati nei rispettivi elenchi a discesa.
- Se l'applicazione di profilatura è codice nativo, assicurarsi di abilitare l'opzione Mostra codice nativo nell'elenco a discesa Impostazioni.
- Se non si dispone ancora di dati, è probabile che la traccia raccolta sia troppo breve per i dati da presentare. Assicurarsi che il programma per cui si raccolgono i dati non venga completato troppo rapidamente (meno di un secondo).
Vedere anche: Mostra codice esterno
Il completamento dei risultati richiede molto tempo
Se l'analisi dell'heap dopo il caricamento della raccolta sembra lenta, vedere le possibili soluzioni seguenti che consentono di risolvere i problemi relativi al tempo di attesa.
Come correggere A volte può richiedere più tempo quando si tenta di analizzare gli snapshot da applicazioni a elevato utilizzo di memoria, ma l'aggiornamento a una versione più recente di Visual Studio dovrebbe ridurre il tempo di attesa dell'analisi. Se questo problema è persistente dopo l'aggiornamento, potrebbe verificarsi un bug sulle prestazioni nello strumento. Creare un ticket di feedback e condividere il file diagsession creato. Con il file è possibile determinare il motivo per cui i dati sono lenti da analizzare e individuare dove è possibile apportare miglioramenti delle prestazioni.
Assicurarsi di fornire un file di traccia e dump dell'heap nel ticket di feedback.
Vedere anche:
Errore "Impossibile creare un file manifesto per questa diagsession" o "errore non è stato possibile creare il file manifesto per la diagsession, Visual Studio non sarà in grado di riaprire questa sessione".
Questo problema indica che si è verificato un problema durante la preparazione dei dati dello snapshot di memoria da analizzare e visualizzare dopo l'arresto della raccolta dei dati. Esistono più possibili cause per la visualizzazione del problema, da un errore di recupero delle informazioni corrette dagli agenti di raccolta all'elaborazione effettiva dei dati. Pertanto, non sarà possibile diagnosticare il problema senza ulteriore registrazione.
Come correggere la risposta al ticket di feedback con informazioni di registrazione aggiuntive in modo da poter diagnosticare il problema. È possibile ottenere le informazioni di log eseguendo i comandi seguenti da un prompt dei comandi con privilegi elevati:
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
Dopo aver eseguito questi comandi, avviare Visual Studio, riprodurre lo scenario, chiudere Visual Studio, quindi comprimere la directory di log di DiagnosticsHub scelta e collegarla a questo ticket. Da questo punto, dovremmo essere in grado di diagnosticare meglio ciò che sta accadendo.
Dopo aver aggiunto il log al ticket, eseguire questi comandi per disabilitare la registrazione:
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
Errore: "Informazioni sull'origine non disponibili".
Per visualizzare le informazioni sull'origine, è necessario che i PDB siano disponibili dal momento della raccolta. Ad esempio, se si raccoglie un file diagsession di utilizzo della CPU, apportare alcune modifiche al codice, ricompilare (che sostituisce il pbd precedente), quindi aprire di nuovo la diagsessione con estensione diagsession, probabilmente non sarà possibile visualizzare le informazioni di origine per i moduli del codice aggiornato.
Come risolvere la soluzione più semplice per questo problema consiste nel raccogliere una nuova diagsessione dopo aver apportato modifiche. In questo modo è possibile assicurarsi che i PDB siano aggiornati.
Errore: "L'analisi della memoria non è riuscita a causa di un errore interno".
Dopo una sessione di profilatura della memoria lunga, qualsiasi tentativo di analizzare il risultato viene soddisfatto con l'errore.
C'è stata una mancata corrispondenza tra le informazioni sullo snapshot acquisite dallo strumento di memoria e quella dell'agente di raccolta. Questo risultato significa che lo strumento di memoria non è riuscito a trovare il file di stato dell'heap per uno snapshot nativo. In alternativa, questo risultato lo strumento di memoria non è riuscito a trovare la corrispondenza tra l'ora di inizio GC dello snapshot e quella registrata nel file diagsession per recuperare GCStats.
Come risolvere questo problema è dovuto a un bug nello strumento risolto nella versione 17.3. L'aggiornamento a una versione successiva dovrebbe risolvere il problema. Se il problema è ancora persistente dopo l'aggiornamento, creare un ticket di feedback e collegarsi al ticket:
- File diagsession
- Minidump di Visual Studio
- Screenshot degli snapshot di memoria acquisiti.
Non esiste una soluzione alternativa per questo problema e la sessione di profilatura dovrà essere riavviata.
Errore: "X eventi di diagnostica eliminati, alcune informazioni nel report potrebbero essere mancanti o imprecise"
In alcuni casi durante l'acquisizione dei dati, gli eventi possono essere eliminati che possono causare la mancata o inutilizzabilità del report di profilatura risultante. Gli eventi eliminati possono verificarsi per molti motivi diversi, ma si verificano principalmente quando il sistema non è in grado di scaricare gli eventi su disco più velocemente della frequenza in ingresso.
Come correggere Per ridurre gli eventi eliminati, è possibile chiudere altre operazioni a elevato utilizzo di disco e CPU durante la profilatura. Chiudendo queste operazioni, il sistema può dedicare più risorse allo scaricamento degli eventi in ingresso. È anche possibile provare a ridurre le frequenze di campionamento sugli strumenti che supportano queste impostazioni di configurazione, ad esempio lo strumento Utilizzo CPU e lo strumento di allocazione .NET e quindi ridurre il sovraccarico.
Errore: Le risorse ETW sono state esaurite
Il profiler di Visual Studio usa Event Tracing for Windows (ETW) per raccogliere le informazioni sulle prestazioni. Esistono un numero limitato di sessioni ETW disponibili per l'uso in un sistema e se tutte le sessioni sono già in uso, viene visualizzato l'errore seguente: ETW resources have been exhausted
. Queste sessioni vengono usate da altri programmi, ad esempio la suite di strumenti SysInternals, altri profiler e altri strumenti di diagnostica. È possibile risolvere questo problema in uno dei due casi:
Chiusura dei programmi che usano le sessioni per liberare risorse o
Se si usano più risorse, eseguire il comando seguente da un prompt dei comandi con privilegi elevati e quindi riavviare:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI" /v EtwMaxLoggers /t REG_DWORD /d 128
L'esecuzione di questo comando aumenta il numero predefinito di sessioni da 64 a 128 (256 è il numero massimo di sessioni consentite in un sistema).
Errore: lo strumento Utilizzo CPU non funziona nella macchina virtuale ARM64
Il profiler di Visual Studio usa Event Tracing for Windows (ETW) per raccogliere le informazioni sulle prestazioni. Attualmente, la raccolta di esempi di profili che usano ETW non è supportata in Windows per ARM64 durante l'esecuzione in una macchina virtuale. Per ovviare a questa limitazione, è possibile usare lo strumento Utilizzo CPU in un dispositivo ARM64 effettivo o usare lo strumento Strumentazione per acquisire informazioni sulla tempistica.
Errore: lo strumento Utilizzo memoria non funziona in .NET 7 e .NET Runtime 8.0.0-8.0.1 con Server GC abilitato
A causa di un problema introdotto con il runtime .NET 7 e propagato alle versioni di runtime di .NET 8 8.0.0 e 8.0.1, non è possibile enumerare gli oggetti quando si usa Garbage Collection server. L'operazione di Garbage Collection server è abilitata per impostazione predefinita per le applicazioni core ASP.NET.
Come correggere
Per risolvere questo problema:
- Disabilitare l'operazione di Garbage Collection del server durante la creazione di uno snapshot o la raccolta di un dump dell'applicazione.
- Usare una versione non interessata del runtime .NET.
Vedere anche:
- Operazione di Garbage Collection per workstation e server
- Opzioni di configurazione di runtime per Garbage Collection
- L'applicazione livello dati non riesce ad enumerare gli oggetti heap in .NET 7+ a causa di aree GC