Partilhar via


Depurar aplicações .NET em computadores de placa única ARM

Depurar apps .NET que estão a correr em SBCs baseados em ARM, como o Raspberry Pi, apresenta um desafio único. Se quiseres, podes instalar o Visual Studio Code e o SDK .NET no dispositivo e desenvolver localmente. No entanto, o desempenho do dispositivo é tal que codificar e depurar localmente não é ideal. Além disso, a extensão Visual Studio Code para C# não é compatível com sistemas operativos ARM de 32 bits. Consequentemente, funcionalidades como o IntelliSense e a depuração no Visual Studio Code em dispositivos ARM só são suportadas em sistemas de 64 bits.

Por estas razões, é fortemente recomendado que desenvolvas a tua aplicação num computador de desenvolvimento e depois a implementes no dispositivo para depuração remota. Se desejar desenvolver e depurar localmente no dispositivo, necessitará do seguinte:

O restante deste artigo descreve como depurar aplicações .NET em computadores de placa única remotamente a partir de um computador de desenvolvimento.

Debug do Visual Studio Code (multiplataforma)

Depurar .NET em computadores de placa única a partir de Visual Studio Code requer passos de configuração no SBC e no ficheiro launch.json do projeto.

Ativar SSH no SBC

Para a depuração remota, é necessário SSH. Para ativar o SSH no Raspberry Pi, consulte Ativar SSH na documentação do Raspberry Pi. Certifique-se de que tem o SSH sem palavra-passe configurado.

Importante

Este exemplo exige que configure o SSH sem palavra-passe no seu dispositivo, pois o OpenSSH não suporta passar palavras-passe na linha de comandos. Se precisares de usar uma palavra-passe, considera substituir a ferramenta Plink por ssh.

Instale o Visual Studio Remote Debugger no SBC

Dentro de uma consola Bash no SBC (seja numa sessão local ou via SSH), execute o seguinte comando. Este comando descarrega e instala o Visual Studio Remote Debugger no dispositivo:

curl -sSL https://aka.ms/getvsdbgsh | /bin/sh /dev/stdin -v latest -l ~/vsdbg

Configurar o ficheiro launch.json no Visual Studio Code

No computador de desenvolvimento, adicione uma configuração de lançamento ao launch.jsondo projeto. Se o projeto não tiver um ficheiro launch.json, adicione um mudando para o separador Run, selecionando criar um ficheiro launch.json e selecionando .NET ou .NET Core no diálogo.

A nova configuração em launch.json deverá assemelhar-se 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 ficheiro executável criado por dotnet publish.
  • cwd é o diretório de trabalho a usar ao iniciar a aplicação no dispositivo.
  • pipeProgram é o caminho para um cliente SSH na máquina local.
  • pipeArgs são os parâmetros a serem passados ao cliente SSH. Certifique-se de especificar o parâmetro da palavra-passe, bem como o pi utilizador no formato <user>@<hostname>.

Implantar o aplicativo

Implemente a aplicação conforme descrito em Implemente .NET aplicações para computadores ARM de placa única. Certifique-se de que o caminho de implementação é o mesmo especificado no cwd parâmetro da configuração launch.json.

Inicie o depurador

No Visual Studio Code, no separador Run and Debug, selecione a configuração que adicionou a launch.json e selecione Start Debuggging. A aplicação inicia-se no dispositivo. O depurador pode ser usado para definir pontos de interrupção, inspecionar variáveis locais, entre outras funções.

Depurar a partir do Visual Studio no Windows

O Visual Studio pode depurar aplicações .NET em dispositivos remotos via SSH. Não é necessária uma configuração especializada no dispositivo. Para detalhes sobre o uso de Visual Studio para depurar .NET remotamente, veja Remote debug .NET no Linux usando SSH.

Certifique-se de selecionar o dotnet processo se estiver a depurar uma implementação dependente do framework. Caso contrário, o processo terá o mesmo nome que o executável da aplicação.