Share via


ARM 단일 보드 컴퓨터에서 .NET 앱 디버그

Raspberry Pi와 같은 ARM 기반 SBC에서 실행되는 .NET 앱을 디버그하는 것은 고유한 과제입니다. 원하는 경우 디바이스에 Visual Studio Code와 .NET SDK를 설치하고 로컬에서 개발할 수 있습니다. 그러나 디바이스의 성능은 로컬에서 코딩 및 디버그하는 것이 이상적이지 않습니다. 또한 C#용 Visual Studio Code 확장은 32비트 ARM 운영 체제와 호환되지 않습니다. 따라서 ARM 디바이스에서 Visual Studio Code의 IntelliSense 및 디버그와 같은 기능은 64비트 시스템에서만 지원됩니다.

이러한 이유로 개발 컴퓨터에서 앱을 개발한 다음 원격 디버깅을 위해 디바이스에 앱을 배포하는 것이 좋습니다. 디바이스에서 로컬로 개발하고 디버그하려면 다음이 필요합니다.

이 문서의 나머지 부분에서는 개발 컴퓨터에서 원격으로 단일 보드 컴퓨터의 .NET 앱을 디버그하는 방법에 대해 설명합니다.

Important

이 문서를 작성하는 시점에서 linux-arm 환경에서 .NET 7 앱을 원격으로 디버그하는 것은 신뢰할 수 없으며 프로세스가 조기에 종료될 수 있습니다. 이 문제는 조사 중입니다. linux-arm을 대상으로 하는 .NET 6 앱과 linux-arm64를 대상으로 하는 .NET 7 앱은 영향을 받지 않습니다.

Visual Studio Code에서 디버그(플랫폼 간)

Visual Studio Code에서 단일 보드 컴퓨터에서 .NET을 디버그하려면 SBC 및 프로젝트의 launch.json 파일에서 구성 단계를 수행해야 합니다.

SBC에서 SSH를 사용하도록 설정

원격 디버깅에는 SSH가 필요합니다. Raspberry Pi에서 SSH를 활성화하려면 Raspberry Pi 문서의 SSH를 사용하도록 설정을 참조하세요. 암호 없는 SSH를 구성해야 합니다.

Important

OpenSSH는 명령줄에서 암호 전달을 지원하지 않으므로 이 예제에서는 디바이스에 암호 없는 SSH를 구성해야 합니다. 암호를 사용해야 하는 경우 sshPlink 도구로 대체하는 것을 고려해 보세요.

SBC에 Visual Studio 원격 디버거 설치

SBC의 Bash 콘솔 내에서 로컬 세션 또는 SSH를 통해 다음 명령을 실행합니다. 이 명령은 디바이스에 Visual Studio 원격 디버거를 다운로드하고 설치합니다.

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

Visual Studio Code에서 launch.json 설정

개발 컴퓨터에서 프로젝트의 launch.json에 시작 구성을 추가합니다. 프로젝트에 launch.json 파일이 없는 경우 실행 탭으로 전환하고 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"
        }
    },

다음을 확인합니다.

  • programdotnet publish로 만든 실행 파일입니다.
  • cwd는 디바이스에서 앱을 시작할 때 사용할 작업 디렉터리입니다.
  • pipeProgram은 로컬 머신에서 SSH 클라이언트의 경로입니다.
  • pipeArgs는 SSH 클라이언트에 전달할 매개 변수입니다. password 매개 변수와 함께 <user>@<hostname> 형식의 pi 사용자를 지정해야 합니다.

앱 배포하기

ARM 단일 보드 컴퓨터에 .NET 앱 배포에 설명된 대로 앱을 배포합니다. 배포 경로가 launch.json 구성의 cwd 매개 변수에 저장된 동일한 경로인지 확인합니다.

디버거 시작

Visual Studio Code의 실행 및 디버그 탭에서 launch.json에 추가한 구성을 선택하고 디버깅 시작을 선택합니다. 앱이 디바이스에서 시작됩니다. 디버거를 사용하여 중단점 설정, 로컬 항목 검사 등의 작업을 수행할 수 있습니다.

Windows의 Visual Studio에서 디버그

Visual Studio는 SSH를 통해 원격 디바이스의 .NET 앱을 디버그할 수 있습니다. 디바이스에서 특수화된 구성이 필요하지 않습니다. Visual Studio를 사용하여 .NET을 원격으로 디버그하는 방법에 관한 자세한 내용은 SSH를 사용하여 Linux의 .NET 원격 디버그를 참조하세요.

프레임워크 종속 배포를 디버깅하는 경우 dotnet 프로세스를 선택해야 합니다. 그렇지 않으면 프로세스 이름이 앱 실행 파일과 동일하게 지정됩니다.