次の方法で共有


プロセスにアタッチして SSH を使用して Linux 上の .NET Core をデバッグする

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 curl
    

    SFTP は 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 マシンで実行されている場合は、デバッガーをアタッチする準備が整います。

  1. Visual Studio で、[ デバッグ>プロセスにアタッチ...] を選択します。

  2. [ 接続の種類 ] ボックスの一覧で [SSH] を選択 します

  3. 接続ターゲットを、ターゲット コンピューターの IP アドレスまたはホスト名に変更します。

    資格情報をまだ指定していない場合は、パスワードや秘密キー ファイルの入力を求められます。 秘密キー ファイルの使用の詳細については、「 リモート接続の設定」を参照してください。

    SSH サーバーが実行されているポートを除き、構成するポート要件はありません。

  4. デバッグしたいプロセスを見つけてください。

    コードは、一意のプロセス名または dotnet という名前のプロセスで実行されます。 関心のあるプロセスを見つけるには、[ タイトル ] 列を確認します。この列には、プロセスのコマンド ライン引数が表示されます。

    次の例では、[プロセス にアタッチ ] ダイアログ ボックスに表示される SSH トランスポート経由のリモート Linux マシンからのプロセスの一覧が表示されます。

    Linux へのアタッチ プロセスのスクリーンショット。

    Linux へのアタッチ プロセスのスクリーンショット。

  5. を選択し、を添付します。

    表示されたダイアログで、デバッグするコードの種類を選択します。 [ マネージド ( .NET Core for Unix)]を選択します。

  6. Visual Studio のデバッグ機能を使用してアプリをデバッグします。

    次の例では、リモート Linux マシンで実行されているコードのブレークポイントで Visual Studio デバッガーが停止していることがわかります。

    [ブレークポイントにヒット] のスクリーンショット。

    [ブレークポイントにヒット] のスクリーンショット。