Solución de errores de generación de perfiles y corrección de problemas
En este artículo se proporcionan soluciones para algunos de los errores más comunes que pueden impedir el uso o la obtención de datos suficientes del Generador de perfiles de rendimiento en Visual Studio.
No hay resultados
Error: "No hay datos en el conjunto de filtros actual"
Al abrir un archivo diagsession, se aplican determinados filtros, como el de ocultar código nativo o que no es de usuario para facilitar la comprensión del seguimiento. Además, hay otros filtros que se pueden aplicar, como la selección de tiempo y el subproceso, que reducen aún más los datos que se muestran. Si estos filtros se aplican de manera que no quede ningún dato para mostrar, verá esta advertencia.
Solución
- Asegúrese de que la selección de tiempo contenga datos. Si ha cambiado la selección de tiempo en el gráfico de encima de los datos, seleccione Borrar selección para restablecerla.
- A continuación, si todavía no hay datos, asegúrese de que todas las categorías y los subprocesos estén habilitados en sus respectivas listas desplegables.
- Si la aplicación de la que va a generar perfiles es de código nativo, asegúrese de habilitar la opción Mostrar código nativo en la lista desplegable Configuración.
- Si todavía no tiene datos, es probable que el seguimiento que recopiló sea demasiado corto para que haya datos. Asegúrese de que el programa para el que va a recopilar datos no se complete demasiado rápido (menos de un segundo).
Vea también: Visualización de código externo
Los resultados tardan mucho tiempo en completarse
Si el análisis del montón tras la recopilación parece cargarse de forma lenta, consulte las siguientes soluciones posibles que pueden ayudar a resolver problemas de tiempo de espera.
Corrección A veces, se puede tardar más tiempo cuando se intenta analizar instantáneas de aplicaciones que consumen mucha memoria, pero la actualización a una versión más reciente de Visual Studio debería reducir el tiempo de espera del análisis. Si este problema es persistente después de la actualización, puede que haya un error de rendimiento en la herramienta. Cree un vale de comentarios y comparta el archivo diagsession que se ha creado. Con el archivo, podemos determinar por qué el análisis de los datos es lento y encontrar dónde podemos realizar mejoras en el rendimiento.
Asegúrese de proporcionar un seguimiento y archivos de volcado de memoria de montones en el vale de comentarios.
Consulte también:
Error "No se pudo crear un archivo de manifiesto para este elemento diagsession" o error "No se pudo crear el archivo de manifiesto para diagsession; Visual Studio no podrá volver a abrir esta sesión".
Esta incidencia significa que ha habido un problema al preparar los datos de instantánea de memoria que se van a analizar y mostrar después de detener la recopilación de datos. Hay varias causas potenciales para que aparezca el problema, desde un error al obtener la información correcta de los agentes de recopilación hasta el procesamiento de datos real. Por lo tanto, no será posible diagnosticar cuál es el problema sin un registro adicional.
Corrección Responda a su vale de comentarios con información de un registro adicional para que podamos diagnosticar el problema. Para obtener la información de registro, ejecute los siguientes comandos desde un símbolo del sistema con privilegios elevados:
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
Después de ejecutar estos comandos, inicie Visual Studio, reproduzca el escenario, cierre Visual Studio y, a continuación, comprima el directorio de registro de DiagnosticsHub elegido y adjúntelo a este vale. Desde ese punto, deberíamos poder diagnosticar mejor lo que sucede.
Después de agregar el registro al vale, ejecute estos comandos para deshabilitar el registro:
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
Error: "No hay información del origen disponible".
Para poder ver la información de origen, debe tener archivos PDB disponibles desde el momento de la recopilación. Por lo tanto, por ejemplo, si recopila un archivo de diagsession de uso de la CPU, realice algunos cambios en el código, vuelva a compilarlo (lo que reemplazará el PBD anterior) y vuelva a abrir el archivo .diagsession. Probablemente, no podrá ver la información de origen para los módulos del código que ha actualizado.
Corrección La solución más sencilla para este problema es recopilar un nuevo archivo diagsession después de realizar cambios. De este modo, tendrá la certeza de que los archivos PDB están actualizados.
Error: "Error de análisis de memoria debido a un error interno".
Después de una sesión larga de generación de perfiles de memoria, en cualquier intento de analizar el resultado se mostrará el error.
Error de coincidencia entre la información de instantánea capturada mediante la herramienta de memoria y la del agente de recopilación. Este resultado significa que la herramienta de memoria no ha podido encontrar el archivo de estado del montón para una instantánea nativa. O bien, este resultado significa que la herramienta de memoria no ha podido hacer coincidir la hora de inicio de la GC de la instantánea con la registrada en el archivo diagsession para recuperar los GCStats.
Corrección Este problema se debe a un error en la herramienta que se corrigió en la versión 17.3. La actualización a una versión posterior debería resolver el problema. Si el problema persiste después de la actualización, cree un vale de comentarios y adjunte lo siguiente:
- El archivo diagsession
- Minivolcado de Visual Studio
- Captura de pantalla de las instantáneas de memoria tomadas.
No hay ninguna solución alternativa para este problema y es necesario reiniciar la sesión de la generación de perfiles.
Error: "X eventos de diagnóstico eliminados. Puede que falte parte de la información del informe o que no sea precisa.
Durante la captura de datos, a veces se pueden eliminar eventos que pueden hacer que el informe de generación de perfiles resultante sea inexacto o no se pueda usar. Se pueden eliminar eventos por muchos motivos distintos, pero principalmente se produce cuando la velocidad de entrada es mayor que la capacidad que tiene el sistema para vaciar los eventos en el disco.
Procedimientos para corregirlo Para reducir los eventos eliminados, puede cerrar otras operaciones de uso intensivo de disco y CPU durante la generación de perfiles. Al cerrar estas operaciones, el sistema puede dedicar más recursos a vaciar los eventos de entrada. También puede intentar reducir las frecuencias de muestreo en las herramientas que admiten estas opciones de configuración, como Uso de CPU y Asignación de .NET y, por lo tanto, reducir la sobrecarga.
Error: Se han agotado los recursos de ETW
El generador de perfiles de Visual Studio usa la característica Seguimiento de eventos para Windows (ETW) para recopilar su información de rendimiento. Hay un número finito de sesiones de ETW disponibles para su uso en un sistema y si todas ellas ya están en uso, aparecerá el siguiente error: ETW resources have been exhausted
. Estas sesiones las usan otros programas, como el conjunto de herramientas SysInternals, otros generadores de perfiles y otras herramientas de diagnóstico. Este problema se puede resolver de cualquiera de estas formas:
Cerrar los programas que usan las sesiones para liberar recursos.
Apartar más recursos, para lo que es preciso ejecutar lo siguiente desde un símbolo del sistema con privilegios elevados, y posteriormente reiniciar:
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI" /v EtwMaxLoggers /t REG_DWORD /d 128
La ejecución de este comando aumenta el número predeterminado de sesiones de 64 a 128 (256 es el número máximo de sesiones permitidas en un sistema).
Error: la herramienta Uso de CPU no funciona en una máquina virtual ARM64
El generador de perfiles de Visual Studio usa la característica Seguimiento de eventos para Windows (ETW) para recopilar su información de rendimiento. Actualmente, la recopilación de ejemplos de perfil mediante ETW no se admite en Windows para ARM64 cuando se ejecuta en una máquina virtual (VM). Para solucionar esta limitación, puede usar la herramienta Uso de CPU en un dispositivo ARM64 real o usar la herramienta de instrumentación para capturar información de tiempo.
Error: la herramienta Uso de memoria no funciona en .NET 7 y .NET Runtime 8.0.0-8.0.1 con la GC del servidor habilitada
Debido a un problema introducido con el runtime de .NET 7 y propagado a las versiones 8.0.0 y 8.0.1 de .NET 8, no es posible enumerar objetos al usar la recolección de elementos no utilizados del servidor. La recolección de elementos no utilizados del servidor está habilitada de forma predeterminada para las aplicaciones de ASP.NET Core.
Solución
Para evitar este problema:
- Deshabilite la recolección de elementos no utilizados del servidor al tomar una instantánea o recopilar un volcado de memoria de la aplicación.
- Use una versión no afectada del runtime de .NET.
Consulte también:
- Recolección de elementos no utilizados de estación de trabajo y de servidor
- Opciones de configuración de ejecución para la recolección de elementos no utilizados
- DAC no puede enumerar objetos de montón en .NET 7+ debido a las regiones de la GC