對 ARM 單板電腦上的 .NET 應用程式進行偵錯

對 ARM 型單板電腦上執行的 .NET 應用程式 (例如 Raspberry Pi) 進行偵錯是個很獨特的挑戰。 如有需要,您可以在裝置上安裝 Visual Studio Code 和 .NET SDK,並在本機進行開發。 不過,裝置的效能讓在本機撰寫程式碼和偵錯的結果並不理想。 此外,C# 的 Visual Studio Code 擴充功能與 32 位元 ARM 作業系統不相容。 因此,只有 64 位元系統才能支援在 ARM 裝置上使用 Visual Studio Code 的 IntelliSense 和偵錯等功能。

基於以上原因,強烈建議您在開發電腦上開發應用程式,然後將應用程式部署至裝置以進行遠端偵錯。 若您想要在裝置本機開發及偵錯,則需要下列條件:

本文的其餘部分說明如何從開發電腦對單板電腦上的 .NET 應用程式進行遠端偵錯。

重要

截至本文撰寫時,在 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 (英文)

重要

此範例要求您在裝置上設定 無密碼 SSH (英文),因為 OpenSSH 不支援在命令列上傳遞密碼。 如果您需要使用密碼,請考慮使用 Plink 工具 替代 SHH

在 SBC 上安裝 Visual Studio 遠端偵錯工具

在 SBC (或在本機工作階段中或透過 SSH) 的 Bash 主控台內執行下列命令。 此命令會在裝置上下載並安裝 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"
        }
    },

請注意:

  • program 是由 dotnet publish 所建立的可執行檔。
  • cwd 是在裝置上啟動應用程式時要使用的工作目錄。
  • pipeProgram 是本機電腦上 SSH 用戶端的路徑。
  • pipeArgs 是要傳遞至 SSH 用戶端的參數。 請務必指定密碼參數,並指定 pi 使用者的格式為 <user>@<hostname>

部署應用程式

請依將 .NET 應用程式部署至 ARM 單板電腦中所述部署應用程式。 請確定部署路徑與 launch.json 組態中 cwd 參數所指定的路徑相同。

啟動偵錯工具

在 Visual Studio Code 的 [執行和偵錯]索引標籤上,選取您新增至 launch.json 的組態,然後選取 [開始偵錯]。 應用程式會在裝置上啟動。 偵錯工具可用來設定中斷點,以及檢查區域變數等等。

從 Windows 上的 Visual Studio 進行偵錯

Visual Studio 可以透過 SSH 對遠端裝置上的 .NET 應用程式進行偵錯。 裝置上不需要特定的設定。 如需使用 Visual Studio 從遠端偵錯 .NET 的詳細資訊,請參閱使用 SSH 在 Linux 上進行遠端偵錯

若您要偵錯與架構相依的部署,請務必選取 dotnet 流程。 否則流程的名稱會被命名成和應用程式可執行檔相同。