Visual Studio 2017 以降では、Secure Shell (SSH) 経由でローカルまたはリモートの Linux デプロイで実行されている .NET Core および .NET 5 以降のプロセスにアタッチできます。 この記事では、デバッグを設定する方法とデバッグする方法について説明します。 Docker コンテナーを使用したデバッグ シナリオについては、Docker コンテナー で実行されているプロセスへのアタッチ と、代わりに コンテナー ツール に関する記事を参照してください。 Visual Studio から WSL 2 で Linux をデバッグする (プロセスにアタッチしない) 場合は、「Visual Studio を使用して WSL 2 で .NET Core アプリをデバッグする」を参照してください。
注
Azure Kubernetes Service (AKS) で実行されている Linux をデバッグする場合は、プロセスにアタッチするのではなく、 Bridge to Kubernetes を使用することをお勧めします。
[前提条件]
Linux サーバーでは、SSH サーバーをインストールし、curl または wget を使用して解凍してインストールする必要があります。 たとえば、Ubuntu では、次のコマンドを実行して実行できます。
sudo apt-get install openssh-server unzip curlSFTP は SSH と同様に有効にする必要があります。 ほとんどの SSH ディストリビューションでは、既定で SFTP をインストールして有効にしますが、必ずしもそうであるとは限りません。
Linux サーバーで、 Linux に .NET ランタイムをインストールし、Linux ディストリビューション (Ubuntu など) に一致するページを見つけます。 .NET SDK は必要ありません。
包括的な ASP.NET Core の手順については、Nginx と Linux での ASP.NET Core のホストおよびApache と Linux での ASP.NET Core のホストを参照してください。
デバッグ用にアプリケーションを準備する
デバッグ用にアプリケーションを準備するには:
- アプリケーションをビルドするときは、デバッグ構成の使用を検討してください。 リテール コンパイル コード (リリース構成) のデバッグは、デバッグ コンパイル コードよりもはるかに困難です。 リリース構成を使用する必要がある場合は、まずマイ コードのみを無効にします。 この設定を無効にするには、[>オプション>Debugging] を選択し、[マイ コードのみを有効にする] の選択を解除します。
- プロジェクトがポータブル PDB (既定の設定) を生成するように構成されていることを確認し、PDB が DLL と同じ場所にあることを確認します。 Visual Studio でこれを構成するには、プロジェクトを右クリックし、 プロパティ>General>Debug シンボルを選択します。
- プロジェクトがポータブル PDB (既定の設定) を生成するように構成されていることを確認し、PDB が DLL と同じ場所にあることを確認します。 Visual Studio でこれを構成するには、プロジェクトを右クリックし、 プロパティ>Build>Advanced>Debugging Information を選択します。
アプリケーションをビルドしてデプロイする
デバッグの前に、いくつかの方法を使用してアプリをデプロイできます。 例えば、あなたは次のことができます:
ソースをターゲット コンピューターにコピーし、Linux コンピューター上の
dotnet buildを使用してビルドします。Windows でアプリをビルドし、ビルド成果物を Linux マシンに転送します。 (ビルド成果物は、アプリケーション自体、移植可能な PDB、依存する可能性があるランタイム ライブラリ、 および.deps.json ファイルで構成されます)。
アプリがデプロイされたら、アプリケーションを起動します。
デバッガーをアタッチする
アプリケーションが Linux マシンで実行されている場合は、デバッガーをアタッチする準備が整います。
Visual Studio で、[ デバッグ>プロセスにアタッチ...] を選択します。
[ 接続の種類 ] ボックスの一覧で [SSH] を選択 します。
接続ターゲットを、ターゲット コンピューターの IP アドレスまたはホスト名に変更します。
資格情報をまだ指定していない場合は、パスワードや秘密キー ファイルの入力を求められます。 秘密キー ファイルの使用の詳細については、「 リモート接続の設定」を参照してください。
SSH サーバーが実行されているポートを除き、構成するポート要件はありません。
デバッグしたいプロセスを見つけてください。
コードは、一意のプロセス名または dotnet という名前のプロセスで実行されます。 関心のあるプロセスを見つけるには、[ タイトル ] 列を確認します。この列には、プロセスのコマンド ライン引数が表示されます。
次の例では、[プロセス にアタッチ ] ダイアログ ボックスに表示される SSH トランスポート経由のリモート Linux マシンからのプロセスの一覧が表示されます。
を選択し、を添付します。
表示されたダイアログで、デバッグするコードの種類を選択します。 [ マネージド ( .NET Core for Unix)]を選択します。
Visual Studio のデバッグ機能を使用してアプリをデバッグします。
次の例では、リモート Linux マシンで実行されているコードのブレークポイントで Visual Studio デバッガーが停止していることがわかります。