Compartilhar via


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

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

Observação

Para depurar o Linux em execução no AKS (Serviço de Kubernetes do Azure), 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
    

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

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

    Para garantir que os serviços de depuração do .NET necessários estejam disponíveis para depuração, evite publicar o aplicativo como um executável de arquivo único.

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

Prepare seu aplicativo para depuração

Considere usar uma configuração de Depuração ao compilar o aplicativo. É mais difícil depurar código compilado no varejo (uma configuração de versão) do que o código compilado por depuração. Se você precisar usar uma configuração de versão, primeiro desabilite o recurso Just My Code. Abra o painel Ferramentas>Opções e expanda a seção Todas as Configurações>Depuração>Geral. Desmarque a caixa de seleção Habilitar Apenas Meu Código .

Considere usar uma configuração de Depuração ao compilar o aplicativo. É mais difícil depurar código compilado no varejo (uma configuração de versão) do que o código compilado por depuração. Se você precisar usar uma configuração de versão, primeiro desabilite 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 Habilitar Apenas Meu Código .

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

Compilar e implantar o aplicativo

Você pode usar vários métodos para implantar o aplicativo antes de iniciar a depuração. Por exemplo, você pode:

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

  • Crie o aplicativo no Windows e, em seguida, transfira os artefatos de build para o computador Linux. (Os artefatos de build consistem no próprio aplicativo, os PDBs portáteis, quaisquer bibliotecas de runtime das quais ele possa depender e o arquivo.deps.json .)

Quando o aplicativo for implantado, inicie o aplicativo.

Anexar o depurador

Quando o aplicativo estiver em execução na máquina Linux, você estará pronto para conectar o depurador.

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

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

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

    Se você não tiver fornecido credenciais, será solicitado que você insira uma senha e/ou um arquivo 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 na qual o servidor SSH está em execução.

  4. Encontre o processo que você deseja depurar.

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

    No exemplo a seguir, você verá uma lista de processos de um computador Linux remoto por meio de um transporte SSH exibido na caixa de diálogo Anexar ao Processo .

    Captura de tela do processo Anexar ao Linux.

  5. Escolha e Anexar.

    Na caixa de diálogo exibida, selecione o tipo de código que você 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ê verá o depurador do Visual Studio parado em um ponto de interrupção no código em execução em um computador Linux remoto.

    Captura de tela de Atingir um ponto de interrupção.