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:

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 por dotnet 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ário pi 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.