Depurar aplicativos .NET em computadores ARM de placa única
A depuração de aplicativos .NET em execução em SBCs baseados em ARM, como o Raspberry Pi, impõe um desafio único. Se desejado, você pode instalar o Visual Studio Code e o SDK do .NET no dispositivo e desenvolver localmente. No entanto, o desempenho do dispositivo é tal que não é ideal codificar e depurar localmente. Além disso, a extensão do Visual Studio Code para C# não é compatível com sistemas operacionais ARM de 32 bits. Consequentemente, funcionalidades como IntelliSense e a depuração no Visual Studio Code em dispositivos ARM só têm suporte em sistemas de 64 bits.
Por esses motivos, é altamente recomendável que você desenvolva seu aplicativo em um computador de desenvolvimento e implante-o no dispositivo para depuração remota. Para desenvolver e depurar localmente no dispositivo, é necessário o seguinte:
- Um sistema operacional de 64 bits com um ambiente de área de trabalho, como o sistema operacional Raspberry Pi (64 bits).
- Visual Studio Code com a extensão C#.
- Desabilite a aceleração de hardware.
- .NET SDK 6.0 ou posterior.
- Instale usando o script dotnet-installcomo em uma implantação dependente da estrutura. Adicione uma variável de ambiente
DOTNET_ROOT
e adicione o diretório .dotnet a$PATH
.
- Instale usando o script dotnet-installcomo em uma implantação dependente da estrutura. Adicione uma variável de ambiente
O restante deste artigo descreve como depurar aplicativos .NET computadores de placa única de remotamente em um computador de desenvolvimento.
Importante
A partir dessa gravação, a depuração remota de aplicativos .NET 7 em ambientes linux-arm
não é confiável e pode fazer com que o processo seja encerrado prematuramente. Este problema está sob investigação. Os aplicativos .NET 6 direcionados a linux-arm
e os aplicativos .NET 7 direcionados a linux-arm64
não são afetados.
Depurar do Visual Studio Code (multiplataforma)
A depuração do .NET em computadores de placa única do Visual Studio Code requer etapas de configuração no SBC e no arquivo launch.json do projeto.
Habilitar o SSH no SBC
O SSH é necessário para depuração remota. Para habilitar o SSH no Raspberry Pi, confira Habilitar SSH na documentação do Raspberry Pi. Verifique se você configurou o SSH sem senha.
Importante
Este exemplo exige que você configure o SSH sem senha em seu dispositivo, pois o OpenSSH não dá suporte à passagem de senhas na linha de comando. Se você precisar usar uma senha, considere substituir a ferramenta Plink por ssh.
Instalar o Depurador Remoto do Visual Studio no SBC
Em um console Bash no SBC (em uma sessão local ou via SSH), execute o comando a seguir. Este comando baixa e instala o Depurador Remoto do Visual Studio no dispositivo:
curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l ~/vsdbg
Configurar launch.json no Visual Studio Code
No computador de desenvolvimento, adicione uma configuração de inicialização ao launch.json do projeto. Se o projeto não tiver um arquivo launch.json, adicione um alternando para a guia Executar, selecionando criar um arquivo launch.json e selecionando .NET ou .NET Core na caixa de diálogo.
A nova configuração em launch.json deve ser semelhante a uma das seguintes:
"configurations": [
{
"name": ".NET Remote Launch - Self-contained",
"type": "coreclr",
"request": "launch",
"program": "~/sample/sample",
"args": [],
"cwd": "~/sample",
"stopAtEntry": false,
"console": "internalConsole",
"pipeTransport": {
"pipeCwd": "${workspaceRoot}",
"pipeProgram": "ssh",
"pipeArgs": [
"pi@raspberrypi"
],
"debuggerPath": "~/vsdbg/vsdbg"
}
},
Observe o seguinte:
program
é o arquivo executável criado pordotnet publish
.cwd
é o diretório de trabalho a ser usado ao iniciar o aplicativo no dispositivo.pipeProgram
é o caminho para um cliente SSH no computador local.pipeArgs
são os parâmetros a serem passados para o cliente SSH. Especifique o parâmetro de senha, bem como o usuáriopi
no formato<user>@<hostname>
.
Implantar o aplicativo
Implante o aplicativo conforme descrito em Implantar aplicativos .NET em computadores ARM de placa única. Verifique se o caminho de implantação é o mesmo caminho especificado no parâmetro cwd
na configuração launch.json.
Iniciar o depurador
No Visual Studio Code, na guia Executar e Depurar, selecione a configuração adicionada ao launch.json e selecione Iniciar Depuração. O aplicativo é iniciado no dispositivo. O depurador pode ser usado para definir pontos de interrupção, inspecionar locais e muito mais.
Depurar do Visual Studio no Windows
O Visual Studio pode depurar aplicativos .NET em dispositivos remotos por meio do SSH. Nenhuma configuração especializada é necessária no dispositivo. Para detalhes sobre como usar o Visual Studio para depurar o .NET remotamente, confira Depuração remota do .NET no Linux usando SSH.
Selecione o processo dotnet
se você estiver depurando uma implantação dependente de estrutura. Caso contrário, o processo será nomeado da mesma forma que o arquivo executável do aplicativo.