使用 Visual Studio 2022 偵錯Dapr 應用程式

2022-12-11 12:01:42

使用Dapr 編寫的是一個多程序的程式, 兩個程序之間依賴於啟動順序來組成父子程序,使用Visual Studio 偵錯起來可能會比較困難,因為 Visual Studio 預設只會把你當前設定的啟動專案的啟動偵錯。 好在有Visual Studio 擴充套件(Microsoft Child Process Debugging Power Tool 外掛)可以支援。這個思路來自 https://github.com/dapr/dotnet-sdk/issues/401

image

1、需要安裝  PowerShell 7 / Core  (可使用命令列:dotnet tool install --global PowerShell)

2、需要安裝 Visual Studio 擴充套件 Microsoft Child Process Debugging Power Tool 2022

安裝外掛後啟動 Visual Studio,可以在 Debug -> Other Debugging Targets 中找到 Child Process Debugging Settings。

image

然後你可以按照下圖的設定開啟此專案的子程序偵錯:

image

我這裡用的一個範例程式是 https://github.com/geffzhang/lab-dapr-with-famous-actors ,結合Dapr 和 Orleans 7.0 的一個Demo程式。

3、專案偵錯屬性設定

image

儲存後會自動生成檔案 launchSettings.json

image

launchSettings.json 內容也可以通過檔案直接修改,效果等同,檔案如下:

"Dapr-PWSH": {
   "commandName": "Executable",
   "executablePath": "pwsh",
   "commandLineArgs": "-Command \"dapr run --app-id modDaprWithFamousActors --app-port 5000 --app-protocol grpc --log-level debug -- dotnet run --no-build\"",
   "workingDirectory": ".",
   "environmentVariables": {
     "ASPNETCORE_ENVIRONMENT": "Development"
   },
   "nativeDebugging": true,
   "dotnetRunMessages": "true",
   "applicationUrl": "http://localhost:5000;https://localhost:5001"
}

現在,你只需要開始偵錯你的程式,那麼你程式中啟動的新的子程序都將可以自動加入偵錯。

效果如下:

image

值得注意的是,只要啟動了本機程式碼偵錯,就不能在程式暫停之後修改程式碼了(像平時偵錯純受控程式碼那樣)。

還有一個方案是採用Dapr sidekick,具體參考文章:  在非k8s 環境下 的應用 使用 Dapr Sidekick for .NET