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.

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>Build>Avançado>Informações 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.

    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.

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