スナップショット デバッガーを使用して Azure アプリ ASP.NET ライブ デバッグする

注

スナップショット デバッグは非推奨となり、Visual Studio 2022 以降のバージョンの最新バージョンでは使用できなくなります。 正確な置き換えはありませんが、役に立つ診断を提供できる他のツールがあります。

スナップショット デバッガーは、関心のあるコードの実行時に、運用環境のアプリのスナップショットを取得します。 スナップショットを取得するようにデバッガーに指示するには、コードでスナップポイントとログポイントを設定します。 デバッガーを使用すると、運用アプリケーションのトラフィックに影響を与えることなく、問題が発生したことを正確に確認できます。 スナップショット デバッガーは、運用環境で発生する問題の解決にかかる時間を大幅に短縮するのに役立ちます。

スナップポイントとログポイントはブレークポイントと似ていますが、ブレークポイントとは異なり、スナップポイントはヒットしてもアプリケーションが停止しません。 通常、スナップポイントでのスナップショットのキャプチャには 10 ~ 20 ミリ秒かかります。

このチュートリアルでは、次のことを行います。

  • スナップショット デバッガーを起動する
  • スナップポイントを設定してスナップショットを表示する
  • ログ ポイントを設定する

[前提条件]

  • スナップショット デバッガーは、 Azure 開発ワークロードを使用して Visual Studio 2017 Enterprise バージョン 15.5 以降でのみ使用できます。 ([個々のコンポーネント] タブの [デバッグとテスト] の下にあります>スナップショット デバッガー)。)

    まだインストールされていない場合は、 Visual Studio 2019 をインストールします。 以前の Visual Studio インストールから更新する場合は、Visual Studio インストーラーを実行し、 ASP.NET および Web 開発ワークロードのスナップショット デバッガー コンポーネントを確認します。

  • Basic 以上の Azure App Service プラン。

  • スナップショット コレクションは、Azure App Service で実行されている次の Web アプリで使用できます。

    • .NET Framework 4.6.1 以降で動作する ASP.NET アプリケーション。
    • ASP.NET Core アプリケーションは、Windows 上の .NET Core 2.0 以降で実行されます。

プロジェクトを開き、スナップショット デバッガーを起動する

  1. デバッグのスナップショットを作成するプロジェクトを開きます。

    Von Bedeutung

    デバッグのスナップショットを作成するには、Azure App Service に発行された のと同じバージョンのソース コード を開く必要があります。

  2. [ デバッグ] > [スナップショット デバッガーのアタッチ]...プロジェクトがデプロイされている Azure App Service と Azure ストレージ アカウントを選択し、[ アタッチ] をクリックします。 スナップショット デバッガーでは、 Azure Kubernetes Service と Azure Virtual Machines (VM) と仮想マシン スケール セットもサポートされます。

    [デバッグ] メニューからスナップショット デバッガーを起動する

    Azure リソースの選択

    Von Bedeutung

    スナップショット デバッガーのアタッチを初めて選択すると、Azure App Service にスナップショット デバッガー サイト拡張機能をインストールするように求められます。 このインストールには、Azure App Service を再起動する必要があります。

    注

    (Visual Studio 2019 バージョン 16.2 以降)スナップショット デバッガーでは、Azure クラウドのサポートが有効になっています。 選択した Azure リソースと Azure Storage アカウントの両方が同じクラウドから取得されていることを確認します。 企業の Azure コンプライアンス構成に関する質問がある場合は、 Azure 管理者にお問い合わせください。

    Visual Studio はスナップショット デバッグ モードになりました。 スナップショット デバッグ モード

    [モジュール] ウィンドウには、すべてのモジュールが Azure App Service に読み込まれたときに表示されます (このウィンドウを開くには、Windows > モジュール>デバッグを選択します)。

    [モジュール] ウィンドウを確認する

スナップポイントを設定する

  1. コード エディターで、スナップポイントを設定する目的のコード行の横にある左側の余白をクリックします。 実行されることがわかっているコードであることを確認します。

    スナップポイントを設定する

  2. [ コレクションの開始 ] をクリックして、スナップポイントをオンにします。

    スナップポイントをオンにする

    ヒント

    スナップショットを表示するときにステップ実行することはできませんが、コード内に複数のスナップポイントを配置して、さまざまなコード行で実行に従うことができます。 コードに複数のスナップポイントがある場合、スナップショット デバッガーは、対応するスナップショットが同じエンド ユーザー セッションからのスナップショットであることを確認します。 スナップショット デバッガーは、アプリにヒットするユーザーが多い場合でもこれを行います。

スナップショットを作成する

スナップポイントが設定されたら、Web サイトのブラウザー ビューに移動し、マークされたコード行を実行してスナップショットを手動で生成するか、ユーザーがサイトの使用状況からスナップショットを生成するのを待ちます。

スナップショット データを検査する

  1. スナップポイントにヒットすると、[診断ツール] ウィンドウにスナップショットが表示されます。 このウィンドウを開くには、[ デバッグ] > [Windows > 診断ツールの表示] を選択します。

    スナップポイントを開く

  2. スナップポイントをダブルクリックして、コード エディターでスナップショットを開きます。

    スナップショット データを検査する

    このビューから、変数をポイントしてデータヒントを表示したり、[ ローカル]、[ ウォッチ]、[ 呼び出し履歴] ウィンドウを使用したり、式を評価したりすることもできます。

    Web サイト自体は引き続きライブであり、エンド ユーザーは影響を受けません。 既定では、スナップポイントごとに 1 つのスナップショットのみがキャプチャされます。スナップショットがキャプチャされた後、スナップポイントはオフになります。 スナップポイントで別のスナップショットをキャプチャする場合は、[ コレクションの更新] をクリックしてスナップポイントを元に戻すことができます。

さらにスナップポイントをアプリに追加し、[ コレクションの更新 ] ボタンを使用して有効にすることもできます。

ヘルプが必要ですか? スナップショットデバッグのページについては、 トラブルシューティングと既知の問題 と FAQ を 参照してください。

条件付きスナップポイントを設定する

アプリで特定の状態を再作成するのが難しい場合は、条件付きスナップポイントの使用を検討してください。 条件付きスナップポイントは、検査する特定の値が変数に含まれている場合など、スナップショットを取得するタイミングを制御するのに役立ちます。 条件は、式、フィルター、またはヒットカウントを使用して設定できます。

条件付きスナップポイントを作成するには

  1. スナップポイント アイコン (中空の球) を右クリックし 、[設定] を選択します。

    [設定] を選択する

  2. [スナップポイントの設定] ウィンドウで、式を入力します。

    式を入力する

    前の図では、スナップショットはスナップポイントに対してのみ作成されます visitor.FirstName == "Dan"。

ログ ポイントを設定する

スナップポイントがヒットしたときにスナップショットを作成するだけでなく、メッセージをログに記録するようにスナップポイントを構成することもできます (つまり、ログポイントを作成します)。 アプリを再デプロイしなくても、ログポイントを設定できます。 ログポイントは仮想的に実行され、実行中のアプリケーションに影響や副作用はありません。

ログポイントを作成するには

  1. スナップポイント アイコン (青い六角形) を右クリックし、[ 設定] を選択します。

  2. スナップポイントの設定ウィンドウで、[ アクション] を選択します。

    ログ ポイントを作成する

  3. [ メッセージ ] フィールドに、ログに記録する新しいログ メッセージを入力できます。 ログ メッセージ内の変数を中かっこ内に配置して評価することもできます。

    [出力ウィンドウに送信] を選択した場合、ログポイントがヒットすると、メッセージが [診断ツール] ウィンドウに表示されます。

    [診断ツール] ウィンドウのログ ポイント データ

    [アプリケーション ログに送信] を選択した場合、ログ ポイントがヒットすると、System.Diagnostics.Trace などのILogger (または .NET Core の) からのメッセージを表示できる任意の場所にメッセージが表示されます。

このチュートリアルでは、App Services のスナップショット デバッガーを使用する方法について説明しました。 この機能の詳細については、こちらをご覧ください。