O desenvolvimento multiplataforma com .NET permite que desenvolvedores criem aplicações robustas em ambiente Windows, visando a execução em sistemas Linux. No entanto, diagnosticar problemas que ocorrem exclusivamente em ambientes baseados em Unix pode ser desafiador. Uma solução eficiente é utilizar o Windows Subsystem for Linux (WSL2) em conjunto com o Visual Studio para realizar depurações em tempo real.
Configuração do Ambiente WSL2
Antes de iniciar a depuração, certifique-se de que sua distribuição Linux no WSL2 está atualizada e que o SDK do .NET necessário está devidamente instalado. Para validar a instalação, execute o comando abaixo no terminal da sua distribuição:
dotnet --list-sdks
Com o ambiente validado, publique sua aplicação visando o runtime do Linux ou execute-a diretamente através do comando dotnet run dentro do diretório do projeto no WSL.
Cofniguração do Servidor SSH
O Visual Studio utiliza o protocolo SSH para se comunicar com o subsistema Linux e gerenciar o processo de depuração. Siga os passos abaixo para preparar o serviço de comunicação:
1. Certifique-se de que o servidor SSH está instalado e atualizado:
sudo apt-get update
sudo apt-get install openssh-server -y
2. Modifique as configurações do arquivo sshd_config para permitir a autenticação via senha, o que facilita o acesso inicial pelo Visual Studio:
sudo nano /etc/ssh/sshd_config
Procure pela linha PasswordAuthentication e altere seu valor para yes. Salve o arquivo e saia do editor.
3. Reinicie o serviço para aplicar as alterações:
sudo service ssh restart
Instalação do Debugger Remoto (.NET Core Debugger)
Para que o Visual Studio consiga inspecionar o código em execução no Linux, é necessário instalar o vsdbg. Este utilitário é o motor de depuração que faz a ponte entre o código gerenciado e o IDE.
Execute o script oficial da Microsoft para baixar e instalar a versão mais recente:
sudo apt-get install unzip -y
curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l ~/vsdbg
Anexando o Visual Studio ao Processo Linux
Com a aplicação rodando no WSL2 e o servidor SSH ativo, siga estes passos no Visual Studio:
- No menu superior, vá em Debug e selecione Attach to Process... (ou pressione
Ctrl+Alt+P). - No campo Connection Type, selecione SSH.
- Em Connection Target, insira o endereço IP ou
localhost(dependendo da configuração do seu WSL) e conecte-se com as credenciais do seu usuário Linux. - Após estabelecer a conexão, uma lista de processos ativos no Linux será exibida. Localize o processo da sua aplicação .NET (geralmente listado pelo nome do executável ou como
dotnet). - Clique em Attach. Na janela de seleção de tipo de código, escolha Managed (.NET Core for Unix).
Uma vez anexado, você poderá inserir breakpoints, inspecionar variáveis e analisar a pilha de chamadas diretamente no código-fonte dentro do Visual Studio, enquanto a aplicação executa no contexto real do kernel Linux fornecido pelo WSL2.
Considerações sobre Performance
Utilizar o WSL2 para depuração oferece uma fidelidade de ambiente superior em comparação com emuladores. Como o WSL2 utiliza um kernel Linux real, comportamentos específicos de sistema de arquivos e permissões serão idênticos aos encontrados em servidores de produção Linux, permitindo a captura de bugs que não seriam reproduzíveis nativamente no Windows.