スナップショット デバッガーは、関心のあるコードの実行時に、運用環境のアプリのスナップショットを取得します。 スナップショットを取得するようにデバッガーに指示するには、コードでスナップポイントとログポイントを設定します。 デバッガーを使用すると、運用アプリケーションのトラフィックに影響を与えることなく、問題が発生したことを正確に確認できます。 スナップショット デバッガーは、運用環境で発生する問題の解決にかかる時間を大幅に短縮するのに役立ちます。
スナップポイントとログポイントはブレークポイントと似ていますが、ブレークポイントとは異なり、スナップポイントはヒットしてもアプリケーションが停止しません。 通常、スナップポイントでのスナップショットのキャプチャには 10 ~ 20 ミリ秒かかります。
このチュートリアルでは、次のことを行います。
- スナップショット デバッガーを起動する
- スナップポイントを設定してスナップショットを表示する
- ログ ポイントを設定する
[前提条件]
Azure Virtual Machines (VM) と Azure Virtual Machine Scale Sets のスナップショット デバッガーは、Azure 開発ワークロードを使用する Visual Studio 2019 Enterprise 以降でのみ使用できます。 ([個々のコンポーネント] タブの [デバッグとテスト] の下にあります>スナップショット デバッガー)。)
まだインストールされていない場合は、 Visual Studio 2019 Enterprise をインストールします。
スナップショット コレクションは、次の Azure Virtual Machines\Virtual Machine Scale Sets Web アプリで使用できます。
- .NET Framework 4.6.1 以降で動作する ASP.NET アプリケーション。
- ASP.NET Core アプリケーションは、Windows 上の .NET Core 2.0 以降で実行されます。
注
32 ビット Windows で実行されている Visual Studio Enterprise では、スナップショットを表示できません。
プロジェクトを開き、スナップショット デバッガーを起動する
デバッグのスナップショットを作成するプロジェクトを開きます。
Von Bedeutung
デバッグのスナップショットを作成するには、Azure Virtual Machine\Virtual Machine Scale Set サービスに発行された のと同じバージョンのソース コード を開く必要があります。
[ デバッグ] > [スナップショット デバッガーのアタッチ]...Web アプリがデプロイされている Azure Virtual Machine\Virtual Machine Scale Set と Azure ストレージ アカウントを選択し、[ アタッチ] をクリックします。 スナップショット デバッガーでは、 Azure Kubernetes Service と Azure App Service もサポートされています。
Von Bedeutung
VM の スナップショット デバッガーのアタッチ を初めて選択すると、IIS が自動的に再起動されます。 仮想マシン スケール セットの スナップショット デバッガーのアタッチ を初めて選択するときは、仮想マシン スケール セットの各インスタンスを手動でアップグレードする必要があります。
注
(Visual Studio 2019 バージョン 16.2 以降)スナップショット デバッガーでは、Azure クラウドのサポートが有効になっています。 選択した Azure リソースと Azure Storage アカウントの両方が同じクラウドから取得されていることを確認します。 企業の Azure コンプライアンス構成に関する質問がある場合は、 Azure 管理者にお問い合わせください。
モジュールのメタデータは最初はアクティブになりません。Web アプリに移動すると、[コレクションの開始] ボタンがアクティブになります。 Visual Studio はスナップショット デバッグ モードになりました。
注
VMSS の場合、ユーザーは、スナップショット デバッガーを初めてアタッチした後、仮想マシン スケール セット内のインスタンスを手動でアップグレードする必要があります。
[モジュール] ウィンドウには、すべてのモジュールが Azure Virtual Machine\Virtual Machine Scale Set に読み込まれたときに表示されます (このウィンドウを開くには、Windows > モジュール>デバッグを選択します)。
スナップポイントを設定する
コード エディターで、スナップポイントを設定する目的のコード行の横にある左側の余白をクリックします。 実行されることがわかっているコードであることを確認します。
[ コレクションの開始 ] をクリックして、スナップポイントをオンにします。
ヒント
スナップショットを表示するときにステップ実行することはできませんが、コード内に複数のスナップポイントを配置して、さまざまなコード行で実行に従うことができます。 コードに複数のスナップポイントがある場合、スナップショット デバッガーは、対応するスナップショットが同じエンド ユーザー セッションからのスナップショットであることを確認します。 スナップショット デバッガーは、アプリにヒットするユーザーが多い場合でもこれを行います。
スナップショットを作成する
スナップポイントが設定されたら、Web サイトのブラウザー ビューに移動し、マークされたコード行を実行してスナップショットを手動で生成するか、ユーザーがサイトの使用状況からスナップショットを生成するのを待ちます。
スナップショット データを検査する
スナップポイントにヒットすると、[診断ツール] ウィンドウにスナップショットが表示されます。 このウィンドウを開くには、[ デバッグ] > [Windows > 診断ツールの表示] を選択します。
スナップポイントをダブルクリックして、コード エディターでスナップショットを開きます。
このビューから、変数をポイントしてデータヒントを表示したり、[ ローカル]、[ ウォッチ]、[ 呼び出し履歴] ウィンドウを使用したり、式を評価したりすることもできます。
Web サイト自体は引き続きライブであり、エンド ユーザーは影響を受けません。 既定では、スナップポイントごとに 1 つのスナップショットのみがキャプチャされます。スナップショットがキャプチャされた後、スナップポイントはオフになります。 スナップポイントで別のスナップショットをキャプチャする場合は、[ コレクションの更新] をクリックしてスナップポイントを元に戻すことができます。
さらにスナップポイントをアプリに追加し、[ コレクションの更新 ] ボタンを使用して有効にすることもできます。
ヘルプが必要ですか? スナップショットデバッグのページについては、 トラブルシューティングと既知の問題 と FAQ を 参照してください。
条件付きスナップポイントを設定する
アプリで特定の状態を再作成するのが難しい場合は、条件付きスナップポイントの使用を検討してください。 条件付きスナップポイントは、検査する特定の値が変数に含まれている場合など、スナップショットを取得するタイミングを制御するのに役立ちます。 条件は、式、フィルター、またはヒットカウントを使用して設定できます。
条件付きスナップポイントを作成するには
スナップポイント アイコン (中空の球) を右クリックし 、[設定] を選択します。
[スナップポイントの設定] ウィンドウで、式を入力します。
前の図では、スナップショットはスナップポイントに対してのみ作成されます
visitor.FirstName == "Dan"
。
ログ ポイントを設定する
スナップポイントがヒットしたときにスナップショットを作成するだけでなく、メッセージをログに記録するようにスナップポイントを構成することもできます (つまり、ログポイントを作成します)。 アプリを再デプロイしなくても、ログポイントを設定できます。 ログポイントは仮想的に実行され、実行中のアプリケーションに影響や副作用はありません。
ログポイントを作成するには
スナップポイント アイコン (青い六角形) を右クリックし、[ 設定] を選択します。
スナップポイントの設定ウィンドウで、[ アクション] を選択します。
[ メッセージ ] フィールドに、ログに記録する新しいログ メッセージを入力できます。 ログ メッセージ内の変数を中かっこ内に配置して評価することもできます。
[出力ウィンドウに送信] を選択した場合、ログポイントがヒットすると、メッセージが [診断ツール] ウィンドウに表示されます。
[アプリケーション ログに送信] を選択した場合、ログ ポイントがヒットすると、
System.Diagnostics.Trace
などのILogger
(または .NET Core の) からのメッセージを表示できる任意の場所にメッセージが表示されます。
関連コンテンツ
このチュートリアルでは、Azure Virtual Machines と Azure Virtual Machine Scale Sets にスナップショット デバッガーを使用する方法について説明しました。 この機能の詳細については、こちらをご覧ください。