Depurar o .NET Core no Linux usando o 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 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, confira os artigos Anexar a um processo em execução em um contêiner do Docker e Ferramentas de contêiner. Para depurar o Linux no WSL 2 do Visual Studio (sem anexação ao processo), confira 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), é recomendado usar a Bridge to Kubernetes em vez de anexar ao processo.
Pré-requisitos
No servidor Linux, é necessário 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 que corresponde à distribuição do Linux (como o Ubuntu). Não é necessário o SDK do .NET.
Para obter instruções abrangentes do ASP.NET Core, confira Hospedar ASP.NET Core no Linux com Nginx e Hospedar ASP.NET Core no Linux com Apache.
Preparar o aplicativo para depuração
Para preparar o aplicativo para depuração:
- Considere usar uma Configuração de depuração ao compilar o aplicativo. É muito mais difícil depurar o 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 Apenas Meu Código. Para desabilitar essa configuração, escolha Ferramentas>Opções>Depuração e desmarque 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>Compilar>Avançado>Informações de Depuração.
Compilar e implantar o aplicativo
Você pode usar vários métodos para implantar o aplicativo antes da depuração. Por exemplo, você pode:
Copie as fontes no computador de destino e compile com
dotnet build
no computador Linux.Compile o aplicativo no Windows e transfira os artefatos de compilação no computador Linux. (Os artefatos de compilação consistem no próprio aplicativo, nos PDBs portáteis, nas bibliotecas de runtime das quais ele pode depender e no arquivo .deps.json.)
Quando o aplicativo for implantado, inicie o aplicativo.
Anexar o depurador
Assim que o aplicativo estiver em execução no computador Linux, você estará pronto para anexar o depurador.
No Visual Studio, escolha Depurar>Anexar ao Processo....
Na lista Tipo de Conexão, selecione SSH.
Altere o Destino de Conexão para o endereço IP ou o nome do host do computador de destino.
Se você ainda não forneceu credenciais, será solicitado que insira a senha e/ou o 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á sendo executado.
Localize o processo que você deseja depurar.
O código é executado no nome de processo exclusivo ou no 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á a lista de processos do computador Linux remoto no transporte SSH exibido na caixa de diálogo Anexar ao Processo.
Selecione Anexar.
Na caixa de diálogo exibida, selecione o tipo de código que você deseja depurar. Escolha Gerenciado (.NET Core para Unix).
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 no computador Linux remoto.