Azure Functions リソースにデプロイしたアプリを Visual Studio でリモートデバッグ実行した時のメモ。
基本は下記ドキュメントを参照。
Visual Studio を使用する Azure Functions の開発 | Microsoft Learn
ここでの説明の前提条件は以下。
- Azure Functions v4 (Windows) + Isolated worker model
- .NET 8
- C#
- Visual Studio 2022
リモートデバッグ手順
- デバッグ対象の Functions の設定で、[構成] - [全般設定] - [リモート デバッグ] をオンにして、[リモート Visual Studio のバージョン] ドロップダウンで "2022" を選択し、変更内容を保存する
- Visual Studio でデバッグ対象の Functions プロジェクトを開き、Debug 構成で対象 Azure Functions に発行 (=公開=デプロイ) する。通常は自動デプロイなどの仕組みを使ってデプロイしていると思うが、それだと Release 構成でビルドされてるはず。ここでは Debug 構成でビルドして VS からデプロイする必要がある
- (必須かは不明) 前述のドキュメントに記載されているが、「発行プロファイルのダウンロード」が必要かも? けど、自分の場合はダウンロードはしたが、それを特に明示的に指定などはしなかったので、本当に必要だったかは微妙なところ
- (必須かは不明) PublishReadyToRun を有効にしているとエラーが出るかもしれないので、その場合は予め false にしてからデプロイする
- Visual Studio で止めたい位置に、ブレークポイントを張っておく
- Visual Studio のメニューから [デバッグ] - [プロセスにアタッチ] を選択し、以下のようにリモートデバッグを行いたい Functions スロットを選択した上で、「dotnet.exe」プロセスを選択して、「アタッチ」する。ちなみに、デバッグ対象としてマイコードのみ有効にしたらダメみたいな記載がドキュメントにあるが、自分の場合は特に問題なかった。どちらかと言うと、マイコード以外がデバッグ対象になると面倒くさくなるので、基本的にはマイコードのみ有効が良いかと思われる
- アタッチが成功したら、後は通常通りデバッグ実行出来る。が、かなり重くて不安定なので、必要最小限のデバッグ確認が出来るようにしておく必要がある
- リモートデバッグ終了したら、Azure の設定はリモートデバッグ設定をオフに戻しておく。とは言え、48h 経つと自動的にオフになるらしいので、そこまで神経質になる必要はなさそう