Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo se aplica a: ✔️ SDK de .NET Core 3.0 y versiones posteriores
Recopilación de volcados de memoria en Linux
Sugerencia
Para obtener preguntas más frecuentes sobre la recopilación del volcado de memoria, el análisis y otras advertencias, vea Volcados de memoria: Preguntas más frecuentes.
Las dos formas recomendadas de recopilar volcados en Linux son las siguientes:
-
dotnet-dump
Herramienta de la CLI - Variables de entorno que recopilan volcados de memoria al producirse bloqueos
Análisis de volcados de memoria en Linux
Después de recopilar un volcado de memoria, se puede analizar mediante la herramienta dotnet-dump
con el comando dotnet-dump analyze
. Este paso de análisis debe ejecutarse en una máquina que tenga la misma arquitectura y distribución de Linux que el entorno en el que se capturó el volcado de memoria.
La dotnet-dump
herramienta admite la visualización de información sobre el código de .NET, pero no resulta útil para comprender los problemas de código de otros lenguajes, como C y C++.
Como alternativa, se puede usar LLDB para analizar los volcados de memoria en Linux, ya que permite el análisis de código administrado y nativo. LLDB usa la extensión SOS para depurar código administrado. La dotnet-sos
herramienta de la CLI se puede usar para instalar SOS, que tiene muchos comandos útiles para depurar código administrado. Para analizar volcados de memoria de .NET Core, LLDB y SOS requieren los siguientes archivos binarios de .NET Core desde el entorno en el que se creó el volcado de memoria:
- libmscordaccore.so
- libcoreclr.so
- dotnet (host usado para iniciar la aplicación)
En la mayoría de los casos, estos archivos binarios se pueden descargar mediante la dotnet-symbol
herramienta . Si no se pueden descargar los archivos binarios necesarios con dotnet-symbol
(por ejemplo, si está en uso una versión privada de .NET Core creada a partir de un origen), puede que sea necesario copiar los archivos enumerados anteriormente desde el entorno en el que se creó el volcado. Si los archivos no se encuentran junto al archivo de volcado de memoria, puede usar el comando setclrpath <path>
de LLDB/SOS para establecer la ruta de acceso desde la que se deben cargar, y setsymbolserver -directory <path>
para establecer la ruta de acceso de los archivos de símbolos.
Una vez que están disponibles los archivos necesarios, el volcado de memoria se puede cargar en LLDB especificando el host de dotnet como el ejecutable que se va a depurar:
lldb --core <dump-file> <host-program>
En la línea de comandos anterior, <dump-file>
es la ruta de acceso del volcado de memoria que se va a analizar y <host-program>
es el programa nativo que inició la aplicación de .NET Core. Este suele ser el dotnet
binario a menos que la aplicación esté independiente, en cuyo caso es el nombre de la aplicación sin la extensión .dll .
Una vez que se inicia LLDB, puede ser necesario usar el setsymbolserver
comando para apuntar a la ubicación de símbolo correcta (setsymbolserver -ms
para usar el servidor de símbolos de Microsoft o setsymbolserver -directory <path>
para especificar una ruta de acceso local). Para cargar símbolos nativos, ejecute loadsymbols
. En este momento, puede usar comandos SOS para analizar el volcado de memoria.
Nota:
LLDB se puede instalar con el comando sudo apt-get install lldb
Análisis de volcados de memoria en Windows
Los volcados recopilados de una máquina Linux también se pueden analizar en una máquina Windows mediante Visual Studio, Windbg o la herramienta dotnet-dump. Tanto Visual Studio como Windbg pueden analizar código nativo y administrado, mientras que dotnet-dump solo analiza el código administrado.
Nota:
Visual Studio 16.8 y versiones posteriores permite abrir y analizar volcados de memoria de Linux generados en .NET Core 3.1.7 o versiones posteriores.
- Visual Studio - Consulte la Guía de depuración de volcados de memoria de Visual Studio.
- Windbg - Puede depurar volcados de memoria de Linux en windbg con las mismas instrucciones que usaría para depurar un volcado en modo de usuario de Windows. Use la versión x64 de windbg para los volcados recopilados de un entorno Linux x64 o Arm64 y la versión x86 para los de un entorno Linux x86.
- dotnet-dump - El volcado se ve mediante el comando dotnet-dump analyze. Use la versión x64 de dotnet-dump para los volcados recopilados de un entorno Linux x64 o Arm64 y la versión x86 para los de un entorno Linux x86.
Consulte también
- dotnet-sos para obtener más información sobre cómo instalar la extensión SOS.
- dotnet-symbol para obtener más información sobre cómo instalar y usar la herramienta de descarga de símbolos.
- Repositorio de diagnósticos de .NET Core para obtener más información sobre la depuración, incluidas las preguntas más frecuentes.
- Instalación de LLDB para obtener instrucciones sobre cómo instalar LLDB en Linux o Mac.
- Práctica y solución de problemas en Linux para ver el tutorial sobre la depuración de volcados de memoria en Linux