Partilhar via


Depurar o .NET Core no Linux usando SSH anexando a um processo

A partir do Visual Studio 2017, você pode anexar processos do .NET Core e do .NET 5+ em execução em uma implantação Linux local ou remota por meio do Secure Shell (SSH). Este artigo descreve como configurar a depuração e como depurar. Para cenários de depuração usando contêineres do Docker, consulte Anexar a um processo em execução em um contêiner do Docker e os artigos das ferramentas de contêiner . Para depurar o Linux no WSL 2 a partir do Visual Studio (sem ligação direta ao processo), consulte Depurar aplicativos .NET Core no WSL 2 com o Visual Studio.

Observação

Para depurar o Linux em execução no Serviço Kubernetes do Azure (AKS), o Bridge to Kubernetes é recomendado em vez de anexar ao processo.

Pré-requisitos

  • No servidor Linux, você precisa instalar o servidor SSH, descompactar e instalar com curl ou wget. Por exemplo, no Ubuntu você pode fazer isso executando:

    sudo apt-get install openssh-server unzip curl
    

    SFTP deve ser habilitado, bem como SSH. A maioria das distribuições SSH instala e habilita o SFTP por padrão, mas nem sempre é esse o caso.

  • No servidor Linux, instale o tempo de execução do .NET no Linux e encontre a página correspondente à sua distribuição Linux (como o Ubuntu). O SDK .NET não é necessário.

    Para garantir que os serviços de depuração .NET necessários estão disponíveis para depuração, evite publicar a aplicação como um executável de ficheiro único.

  • Para obter instruções abrangentes sobre o ASP.NET Core, consulte Host ASP.NET Core no Linux com Nginx e Host ASP.NET Core no Linux com Apache.

Preparar a sua aplicação para depuração

Considere usar uma configuração 'Debug' ao criar a aplicação. É mais difícil depurar código compilado para distribuição (uma configuração de lançamento) do que código compilado para depuração. Se você precisar usar uma configuração de versão, primeiro desative o recurso Just My Code. Abra o painel Ferramentas>Opções e expanda a Todos os Ajustes>Depuração>Geral seção. Desmarque a caixa de seleção Ativar apenas meu código .

Considere usar uma configuração 'Debug' ao criar a aplicação. É mais difícil depurar código compilado para distribuição (uma configuração de lançamento) do que código compilado para depuração. Se você precisar usar uma configuração de versão, primeiro desative o recurso Just My Code. Abra a caixa de diálogo Ferramentas>Opções e expanda a seção Depuração>Geral. Desmarque a caixa de seleção Ativar apenas meu código .

Verifique se o projeto está configurado para produzir PDBs portáteis (que é a configuração padrão) e se os PDBs estão no mesmo local que a DLL. Para configurar isso no Visual Studio, clique com o botão direito do rato no projeto e escolha Propriedades>Geral>Símbolos de depuração.

Criar e implantar o aplicativo

Você pode usar vários métodos para desempenhar a aplicação antes de começar o debug. Por exemplo, você pode:

  • Copie fontes para o computador de destino e construa com dotnet build na máquina Linux.

  • Crie o aplicativo no Windows e, em seguida, transfira os artefatos de compilação para a máquina Linux. (Os artefatos de compilação consistem no próprio aplicativo, nos PDBs portáteis, em quaisquer bibliotecas de tempo de execução das quais ele possa depender e no arquivo .deps.json .)

Quando a aplicação for implantada, inicie a aplicação.

Anexar o depurador

Quando o aplicativo está sendo executado na máquina Linux, você está pronto para anexar o depurador.

  1. No Visual Studio, escolha Depurar>Anexar ao Processo....

  2. Na lista Tipo de Conexão, selecione SSH.

  3. Altere o Destino da Conexão para o endereço IP ou nome do host do computador de destino.

    Se não tiver fornecido credenciais, ser-lhe-á pedido que introduza uma palavra-passe e/ou um ficheiro de chave privada. Para obter mais informações sobre como usar um arquivo de chave privada, consulte Configurar uma conexão remota.

    Não há requisitos de porta para configurar, exceto a porta em que o servidor SSH está sendo executado.

  4. Encontre o processo que você gostaria de depurar.

    Seu código é executado em um nome de processo exclusivo ou em um processo chamado dotnet. Para encontrar o processo em que você está interessado, verifique a coluna Título , que mostra os argumentos da linha de comando para o processo.

    No exemplo a seguir, você verá uma lista de processos de uma máquina Linux remota em um transporte SSH exibido na caixa de diálogo Anexar ao Processo .

    Captura de ecrã ao anexar ao processo Linux.

  5. Escolha Anexar.

    Na caixa de diálogo exibida, selecione o tipo de código que deseja depurar. Escolha Gerenciado (.NET Core para Unix).

  6. Use os recursos de depuração do Visual Studio para depurar o aplicativo.

    No exemplo a seguir, você vê o depurador do Visual Studio parado em um ponto de interrupção no código em execução em uma máquina Linux remota.

    Captura de ecrã de Atingir ponto de paragem.