Поделиться через


Отладка приложений .NET на компьютерах с одной платой ARM

Отладка .NET приложений, работающих на контроллерах SBC на основе ARM, таких как Raspberry Pi, представляет собой уникальную задачу. При необходимости можно установить Visual Studio Code и пакет SDK .NET на устройстве и разработать локально. Однако производительность устройства такова, что локальное кодирование и отладка не являются оптимальными. Кроме того, расширение Visual Studio Code для C# несовместимо с 32-разрядными операционными системами ARM. Следовательно, функции, такие как IntelliSense и отладка в Visual Studio Code на устройствах ARM, поддерживаются только в 64-разрядных системах.

По этим причинам настоятельно рекомендуется разрабатывать приложение на компьютере разработки, а затем развертывать приложение на устройстве для удаленной отладки. Если вы хотите разрабатывать и отлаживать локально на устройстве, необходимо следующее:

В остальной части этой статьи описывается, как выполнять отладку приложений .NET на компьютерах с одной платой удаленно с компьютера разработки.

Отладка из Visual Studio Code (кроссплатформенная версия)

Отладка .NET на одноплатных компьютерах из Visual Studio Code требует настроек на SBC и в файле launch.json проекта.

Включение SSH в SBC

SSH требуется для удаленной отладки. Чтобы включить SSH в Raspberry Pi, см. раздел "Включить SSH " в документации raspberry Pi. Убедитесь, что вы настроили SSH без пароля.

Это важно

В этом примере требуется настроить SSH без пароля на устройстве, так как OpenSSH не поддерживает передачу паролей в командной строке. Если вам нужно использовать пароль, попробуйте использовать средство Plink вместо SSH.

Установка удаленного отладчика Visual Studio на SBC

В консоли Bash на SBC (в локальном сеансе или через SSH) выполните следующую команду. Эта команда скачивает и устанавливает на устройстве Visual Studio удаленный отладчик:

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

Настройка файла launch.json в Visual Studio Code

На компьютере разработки добавьте конфигурацию запуска в launch.json проекта. Если у проекта нет файла launch.json, добавьте его, переключившись на вкладку Run, выбрав создайте файл launch.json и выберите .NET или .NET Core в диалоговом окне.

Новая конфигурация в launch.json должна выглядеть примерно так:

"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"
        }
    },

Обратите внимание на следующее:

  • program — исполняемый файл, созданный с помощью dotnet publish.
  • cwd — рабочий каталог, используемый при запуске приложения на устройстве.
  • pipeProgram — это путь к клиенту SSH на локальном компьютере.
  • pipeArgs — это параметры, передаваемые клиенту SSH. Обязательно укажите параметр пароля, а также pi пользователя в формате <user>@<hostname>.

Развертывание приложения

Разверните приложение, как описано в Deploy .NET приложения на компьютерах с одной платой ARM. Убедитесь, что путь развертывания совпадает с путьом, указанным в cwd параметре в конфигурацииlaunch.json .

Запуск отладчика

Visual Studio Code На вкладке Run and Debug выберите конфигурацию, добавленную в launch.json и выберите Start Debuging. Приложение запускается на устройстве. Отладчик может использоваться для задания точек останова, проверки значений локальных переменных и многого другого.

Отладка из Visual Studio на Windows

Visual Studio может выполнять отладку приложений .NET на удаленных устройствах с помощью SSH. На устройстве не требуется специализированная конфигурация. Дополнительные сведения об использовании Visual Studio для удаленной отладки .NET см. в статье Remote debug .NET в Linux с помощью SSH.

Не забудьте выбрать процесс dotnet, если вы занимаетесь отладкой развертывания, зависящего от фреймворка. В противном случае процесс будет называться таким же, как исполняемый файл приложения.