次の方法で共有


タイム トラベル デバッグを使用して Azure VM 上 ASP.NET アプリを記録および再生する

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

Visual Studio Enterprise でのタイム トラベル デバッグでは、Azure 仮想マシン (VM) で実行されている Web アプリを記録し、実行パスを正確に再構築して再生できます。 Time Travel Debugging (TTD) はプレビュー機能として Visual Studio 2019 Enterprise に追加され、Visual Studio スナップショット デバッガーに統合されました。

タイム トラベル デバッグを使用すると、コードの各行を何度でも巻き戻して再生できます。 この手順は、運用環境でのみ発生する可能性がある問題を分離して特定するのに役立ちます。

タイム トラベル デバッグの記録をキャプチャしてもアプリは停止しませんが、実行中のプロセスに大きなオーバーヘッドが発生します。 速度低下の量は、プロセス サイズやアクティブなスレッドの数などの要因によって異なります。

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

  • TTD を使用してスナップショット デバッガーを起動します。
  • スナップポイントを設定し、タイムトラベル記録を収集します。
  • タイム トラベル記録をデバッグします。

[前提条件]

  • Azure 開発ワークロードがインストールされている Visual Studio Enterprise 2019 以降

    Visual Studio インストーラーで、[個々のコンポーネント] タブの [デバッグとテスト] でスナップショット デバッガーが選択されていることを確認します。

  • Azure VM 上の .NET Framework 4.8 以降で実行されている ASP.NET (AMD64) Web アプリ。

スナップショット デバッガーをアタッチする

  1. デバッグするアプリのプロジェクトを開きます。

    Von Bedeutung

    Azure VM に公開されているのと同じバージョンのソース コードを必ず開きます。

  2. [ デバッグ] > [スナップショット デバッガーのアタッチ] を選択します。 Web アプリがデプロイされている Azure VM と Azure Storage アカウントを選択し、[ アタッチ] を選択します。

    Azure リソースの選択を示すスクリーンショット。

    Von Bedeutung

    スナップショット デバッガーのアタッチを初めて選択すると、IIS は VM で自動的に再起動します。

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

    スナップショット デバッグ モードを示すスクリーンショット。

    Application Insights サイト拡張機能では、スナップショット デバッグもサポートされています。 サイト拡張機能が古いエラー メッセージが表示される場合は、「サイト拡張機能のアップグレード」を参照して、アップグレードの詳細を確認してください。

  4. モジュールのメタデータは、最初はアクティブ化されていません。 Web アプリに移動してモジュールを読み込みます。

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

    [モジュール] ウィンドウを示すスクリーンショット。

    すべてのモジュールが読み込まれたら、Visual Studio ツール バーの [ コレクションの開始 ] ボタンを選択できます。

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

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

    コード エディターでのスナップポイントの設定を示すスクリーンショット。

  2. スナップポイントの空の球アイコンを右クリックし、[ アクション] を選択して [スナップショット設定] ウィンドウを表示します。

    [スナップショット設定] ウィンドウを示すスクリーンショット。

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

ツール バーの [ コレクションの開始 ] を選択して、スナップポイントをオンにします。

[コレクションの開始] を選択してスナップポイントをオンにする方法を示すスクリーンショット。

スナップポイントをオンにすると、スナップショットが配置されているコード行の実行時にスナップショットがキャプチャされます。 実行には、サーバーでの要求が必要な場合があります。 スナップポイントを強制的にヒットするには、Web サイトのブラウザー ビューに移動し、必要なアクションを実行します。

既定では、スナップポイントは 1 つのスナップショットのみをキャプチャします。 スナップポイントがスナップショットをキャプチャした後、スナップポイントがオフになります。 スナップポイントで別のスナップショットをキャプチャする場合は、[ コレクションの更新] を選択してスナップポイントをオンに戻すことができます。

タイム トラベル記録をデバッグする

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

    [診断ツール] ウィンドウのスナップショットを示すスクリーンショット。

  2. [ スナップショットの表示] を選択して、タイム トラベル記録をコード エディターで開きます。

    • [続行] ボタンと [続行] ボタンを使用して、記録されたタイム トラベル デバッグのすべてのコード行を実行できます。

    • [デバッグ] ツール バーを使用して、[次のステートメントの表示]、[ステップ イン]、[ステップ オーバー]、[ステップ アウト]、[ステップ イン]、[ステップ バック オーバー]、[ステップ アウト] を使用することもできます。

      [デバッグ] ツール バーを示すスクリーンショット。

    • Visual Studio の [ローカル]、[ ウォッチ]、[ 呼び出し履歴 ] ウィンドウを使用して、式を評価することもできます。

Web サイトはまだライブであり、エンド ユーザーはタイム トラベル デバッグ アクティビティの影響を受けません。

詳細とヘルプについては、「 Visual Studio でのスナップショット デバッグのトラブルシューティングと既知の問題」を参照してください。

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

アプリで特定の状態を再作成するのが難しい場合は、条件付きスナップポイントの使用を検討してください。 条件付きスナップポイントは、変数に特定の値がある場合など、アプリが目的の状態になるまで記録を収集しないようにするのに役立ちます。 式、フィルター、またはヒット数に基づいて条件を設定する方法の詳細については、「 ブレークポイントの条件」を参照してください。

このチュートリアルでは、スナップショット デバッガーを使用して Azure VM のタイム トラベル記録を収集する方法について説明しました。 スナップショット デバッグの詳細については、以下を参照してください。