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


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

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

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

  • 64-разрядная ОС с классической средой, например Raspberry Pi OS (64-разрядная версия).
  • Visual Studio Code с расширением C#.
  • Пакет SDK для .NET версии 6.0 или более поздней версии.
    • Установите с помощью скрипта dotnet-install, как в развертывании, зависящей от платформы. Обязательно добавьте переменную среды и добавьте в нее DOTNET_ROOT каталог $PATHdotnet.

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

Внимание

По состоянию на этот момент удаленная отладка приложений .NET 7 в linux-arm средах является ненадежной и может привести к преждевременному выходу процесса. Этот вопрос находится под следствием. Приложения .NET 6, предназначенные для linux-arm приложений .NET 7, которые не влияют на них linux-arm64 .

Отладка из 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.js, добавьте его, перейдя на вкладку Запуск, щелкнув Создать файл launch.js и выбрав .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>.

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

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

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

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

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

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

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