Compartir a través de


Depuración de .NET Core en Linux mediante SSH mediante la asociación a un proceso

A partir de Visual Studio 2017, puede asociarse a procesos de .NET Core y .NET 5+ que se ejecutan en una implementación local o remota de Linux a través de Secure Shell (SSH). En este artículo se describe cómo configurar la depuración y cómo depurar. En escenarios de depuración mediante contenedores de Docker, consulte Asociarse a un proceso que se ejecuta en un contenedor de Docker y los artículos de herramientas para contenedores. Para depurar Linux en WSL 2 desde Visual Studio (sin adjuntar al proceso), consulte Depuración de aplicaciones de .NET Core en WSL 2 con Visual Studio.

Nota:

Para depurar Linux en ejecución en Azure Kubernetes Service (AKS), se recomienda Bridge to Kubernetes en lugar de conectarse al proceso.

Prerrequisitos

  • En el servidor Linux, debe instalar el servidor SSH, descomprimir e instalar con curl o wget. Por ejemplo, en Ubuntu puede hacerlo mediante la ejecución de:

    sudo apt-get install openssh-server unzip curl
    

    SFTP debe estar habilitado, así como SSH. La mayoría de las distribuciones SSH instalan y habilitan SFTP de forma predeterminada, pero eso no siempre es el caso.

  • En el servidor Linux, instale el entorno de ejecución de .NET en Linux y busque la página que coincida con la distribución de Linux (por ejemplo, Ubuntu). No se requiere el SDK de .NET.

    Para asegurarse de que los servicios de depuración de .NET necesarios se encuentren disponibles para depuración, evite publicar la aplicación como un archivo ejecutable único.

  • Para obtener instrucciones completas de ASP.NET Core, consulte Host ASP.NET Core en Linux con Nginx y Host ASP.NET Core en Linux con Apache.

Prepare su aplicación para depuración

Considere la posibilidad de usar una configuración de depuración al compilar la aplicación. Es más difícil depurar código compilado en modo lanzamiento (configuración de lanzamiento) que código compilado en modo depuración. Si necesita utilizar la configuración Release, primero deshabilite la característica "Just My Code" (solo mi código). Abra el panel Herramientas>Opciones y expanda la sección Todos los ajustes>Depuración>General. Desactive la casilla Habilitar solo mi código .

Considere la posibilidad de usar una configuración de depuración al compilar la aplicación. Es más difícil depurar código compilado en modo lanzamiento (configuración de lanzamiento) que código compilado en modo depuración. Si necesita utilizar la configuración Release, primero deshabilite la característica "Just My Code" (solo mi código). Abra el cuadro de diálogo Opciones de herramientas> y expanda la sección Depuración>. Desactive la casilla Habilitar solo mi código .

Asegúrese de que el proyecto está configurado para generar archivos PDB portátiles (que es la configuración predeterminada) y asegúrese de que los ARCHIVOS PDF estén en la misma ubicación que el archivo DLL. Para configurarlo en Visual Studio, haga clic con el botón derecho en el proyecto y elija Propiedades>General>Símbolos de depuración.

Asegúrese de que el proyecto está configurado para generar archivos PDB portátiles (que es la configuración predeterminada) y asegúrese de que los ARCHIVOS PDF estén en la misma ubicación que el archivo DLL. Para configurarlo en Visual Studio, haga clic con el botón derecho en el proyecto y elija Propiedades>Compilar>Avanzada>Información de depuración.

Compilación e implementación de la aplicación

Puede usar varios métodos para desplegar la aplicación antes de iniciar la depuración. Por ejemplo, puede hacer lo siguiente:

  • Copie los orígenes en el equipo de destino y compile con dotnet build en la máquina Linux.

  • Compile la aplicación en Windows y, a continuación, transfiera los artefactos de compilación a la máquina Linux. (Los artefactos de compilación constan de la propia aplicación, los archivos PDB portátiles, las bibliotecas en tiempo de ejecución de las que puede depender y el archivo .deps.json ).

Cuando se implemente la aplicación, inicie la aplicación.

Asociar el depurador

Cuando la aplicación se ejecuta en la máquina Linux, estás listo para conectar el depurador.

  1. En Visual Studio, seleccionar Depurar>Adjuntar a proceso.

  2. En la lista Tipo de conexión , seleccione SSH.

  3. Cambie el destino de conexión a la dirección IP o el nombre de host del equipo de destino.

    Si no ha proporcionado credenciales, se le pedirá que escriba una contraseña o un archivo de clave privada. Para obtener más información sobre el uso de un archivo de clave privada, consulte Configuración de una conexión remota.

    No hay requisitos de puerto para configurar, excepto el puerto en el que se ejecuta el servidor SSH.

  4. Busque el proceso que desea depurar.

    El código se ejecuta en un nombre de proceso único o en un proceso denominado dotnet. Para buscar el proceso que le interesa, compruebe la columna Título , que muestra los argumentos de la línea de comandos para el proceso.

    En el ejemplo siguiente, verá una lista de procesos de una máquina Linux remota a través de un transporte SSH que se muestra en el cuadro de diálogo Asociar al proceso .

    Captura de pantalla del proceso de conectarse a Linux.

    Captura de pantalla del proceso de conectarse a Linux.

  5. Elija el y asocie el.

    En el cuadro de diálogo que aparece, seleccione el tipo de código que desea depurar. Elija Managed (.NET Core for Unix).

  6. Use las características de depuración de Visual Studio para depurar la aplicación.

    En el ejemplo siguiente, verá que el depurador de Visual Studio se detuvo en un punto de interrupción en el código que se ejecuta en una máquina Linux remota.

    Captura de pantalla de Alcanzar un punto de interrupción.

    Captura de pantalla de Alcanzar un punto de interrupción.