Laboratorio 4.1 Analizar archivos de volcado de memoria después de copiarlos en otra máquina
Se aplica a: .NET Core 2.1, .NET Core 3.1, .NET 5
En este artículo se describe cómo copiar los archivos de volcado de memoria de una máquina Linux a otra. Por ejemplo, se recopilan los archivos de volcado de memoria de Linux y, a continuación, se copian en una máquina virtual Windows (VM) para analizar.
Requisitos previos
El requisito mínimo para seguir esta sección es tener al menos un volcado de memoria capturado en el entorno Linux de las secciones anteriores de este aprendizaje. Puede usar cualquier archivo de volcado de datos principal generado por la herramienta createdump o dotnet-dump.
Objetivo de este laboratorio
Hasta ahora, a lo largo de los módulos de aprendizaje, ha recopilado los archivos de volcado de datos principales en Linux y los ha abierto en depuradores en la misma máquina virtual de Linux. ¿Qué sucede si no puede analizar los volcados en la misma máquina virtual? Normalmente, se recopilan archivos de volcado de datos principales del entorno de producción con la intención de solucionar un problema. Pero esto no se recomienda. Además, no siempre es posible ejecutar la sesión de depuración en el mismo equipo de producción.
Para solucionar este problema, esta serie de laboratorio cubrirá las siguientes opciones para analizar el archivo de volcado principal que se recopila en una máquina virtual Linux:
- Use dotnet-dump para analizar el archivo de volcado principal en una máquina virtual Linux que se ejecuta dentro del entorno Windows Subsystem For Linux (WSL).
- Use dotnet-dump para analizar el archivo de volcado principal en una máquina virtual Linux que se ejecuta dentro de un contenedor docker.
Los siguientes ejercicios se basan en una máquina virtual basada Windows 10 que se usó para hospedar un contenedor docker y entornos WSL2.
En esta primera parte del laboratorio, se le guiará por el procedimiento de copiar archivos de volcado de memoria de una máquina virtual linux en una máquina virtual de Windows mediante el pscp comando. Este laboratorio también abordará métodos para copiar archivos que no se recomiendan.
Nota
Si no desea hacer frente a la copia de archivos de la máquina virtual linux en la que se generaron los archivos de volcado de datos principales en la máquina virtual de Windows de destino, o si no ha seguido las partes anteriores y no tiene un archivo de volcado de memoria, considere la posibilidad de usar los archivos de volcado principal de ejemplo y omita esta parte.
Copiar un archivo de volcado de memoria en la máquina virtual local
Durante los ejercicios de este aprendizaje para depurar una aplicación principal con ASP.NET, generó tres archivos de volcado de memoria manuales. Ahora, aprenderá a copiar esos archivos de volcado de datos principales en una máquina virtual Windows virtual.
Recuerde que un archivo de volcado de memoria principal contiene la memoria del proceso. Por lo tanto, el tamaño de un volcado de memoria principal podría ser grande si el uso de memoria del proceso es alto. En lugar de copiar cada archivo de volcado de memoria uno por uno, puede optimizar la transferencia. Para ello, empaqueta y comprime con el comando tar para que tenga un archivo coredumps.tar.gz comprimido que contenga los tres archivos de volcado de núcleo.
Como se muestra en la siguiente captura de pantalla, puede usar el tar -czvf coredumps.tar.gz coredump.manual.* comando para crear el archivo de archivo comprimido.
En el ejemplo anterior, el archivo de archivo coredumps.tar.gz se encuentra en la carpeta de archivos de volcado en el home directorio de la vm de Linux. El objetivo es copiar la carpeta /home/UserName/coredumps.tar.gz a d:\Learn\Linux\Dumps en la máquina virtual de Windows destino.
Hay varias maneras de copiar archivos desde una máquina virtual Linux. Ya debería estar familiarizado con una de las opciones: usar el pscp comando en la máquina virtual Windows virtual. Si ha seguido toda la serie, debe recordar este comando de la parte 2.5:copiar archivos del entorno de desarrollo en una máquina virtual linux y, a continuación, extraer los archivos en Linux .
Nota
Para los lectores que no han trabajado en la parte 2.5 de esta serie: presenta PuTTY y analiza las opciones de uso básicas.
Abra el Terminal Windows en la máquina virtual Windows virtual. (Si lo prefiere, puede abrir una ventana del símbolo del sistema en su lugar. Sin embargo, se recomienda encarecidamente que use el Terminal Windows). A continuación, ejecute el siguiente comando para copiar el archivo en la máquina virtual:
pscp -i D:\Learn\Linux\BuggyAmb-Ubuntu-Training_key.ppk <UserName>@buggyamb:/home/<UserName>/dumps/coredumps.tar.gz D:\Learn\Linux\Dumps\coredumps.tar.gz
Nota
Al igual que PuTTY, pscp usa el formato de archivo PPK para la clave privada. Si solo tiene el archivo PEM y no tiene el PPK, puede convertir el formato PEM al formato PPK mediante la herramienta Generador de claves puTTY (PuTTYgen). Esto se explica detalladamente en la parte 1.1:Crear una máquina virtual Linux en Azure y conectarse a ella.
Como se muestra en la siguiente captura de pantalla, el comando copió correctamente el archivo coredumps.tar.gz en la máquina virtual local en la carpeta D:\Learn\Linux\Dumps.
Otras opciones para copiar archivos de Linux
Existen varios métodos para copiar archivos desde Linux a una máquina virtual Windows virtual. Una de las opciones obvias es instalar un servidor FTP en Linux y usar FTP para transferir los archivos a la máquina virtual de Windows destino. Si desea elegir esta opción, asegúrese de configurar un FTP a través de una solución SSH por motivos de seguridad y evite usar un protocolo FTP sin formato porque enviará el nombre de usuario, la contraseña y los datos en texto sin formato.
Otra opción sería copiar los archivos de volcado de datos principales en la carpeta wwwroot de la aplicación ASP.NET Core y, a continuación, descargarlos mediante un explorador web. Esta es una idea realmente mala. Por favor, no intente esto. Un archivo de volcado de memoria contiene toda la memoria del proceso. Esto significa que cualquier información confidencial se incluiría en el archivo de volcado de datos principal. Copiar estos archivos en un servidor web significa que exponiendo la información confidencial del archivo a cualquier persona que pueda tener acceso a su servidor web, incluso si no comparte la dirección URL. Considera esto como una solución de último recurso debido a la exposición a la información que implica.
Después de una transferencia correcta, debe tener al menos un archivo de volcado de memoria en su máquina virtual Windows núcleo. Ahora puede pasar a la siguiente parte para comprender cómo analizar los archivos de volcado.