
写真は、Microsoft StoreのQuantum Break(18+)ゲームページから取得されます。 ちなみに、75%の割引があります(10ドル)。 誰かが望んでも機会を見つけることができなかった場合、お勧めします。
デバッグの最も効果的なタイプは、多くの場合、いわゆる「内部ループ」で発生します。 バージョン管理に進む前にローカルでコードを表示およびデバッグする場合。 内部サイクルの開発中に直面する問題は、アクセス可能で再現性があるため、通常、理解および診断が容易です。

本日、Visual Studio EnterpriseでのTime Travel Debugging(TTD)のリリースをお知らせします。 TTDを使用すると、運用環境で実行されるコードを記述し、Visual Studio内で実行パスを再現することができます。 TTDでは、「内部ループ」のローカルデバッグを実行しているかのように、時間を前後に移動することもできます。 また、ローカルやコールスタックなどの重要なデバッグ機能にもアクセスできます。
最近のデバッガーでは、通常、特定のポイント(ブレークポイント)で停止してプロセス全体を中断し、その後で先に進むことができます。 IntelliTraceなどのより高度なデバッグツールを使用しても 、個別の時点でイベントとデータを記録できます。 TTDには、スナップショット、ログ、またはクラッシュダンプファイルに比べて大きな利点があります。これらのメソッドには、通常、最終的な失敗またはエラーを引き起こした実行パスに関する正確な情報が含まれていないためです。
タイムトラベルデバッグとは
タイムトラベルデバッグ(TTD)は、アプリケーションまたはプロセスでコードの実行を記録し、それを前後に再生できるリバースデバッグソリューションです。 TTDはデバッグを改善します。特定のエラーを引き起こす条件をより深く理解するために時間をさかのぼることができるためです。 さらに、問題を修正する最善の方法を見つけるために、何度か再生することができます。 TTDテクノロジは、ネイティブコードを使用したスクリプトのWinDbgのプレビューバージョンで最近導入されました 。
TTDを使用してスナップショットデバッガーを拡張し、実行中のアプリケーションを記録できるようにしました。 その後、このレコードをVisual Studio Enterprise 2019で再生し、コードの各行を何度でも巻き戻して再生できます。 TTDは、スナップポイント条件を満たすスレッドに書き込み、通常はメソッドの最後まで実行されます。 ただし、スナップポイント後のメソッドの終了前に「待機」がある場合、記録は停止します。 この機能は、有効なライセンスでVisual Studio 2019のリリースのプレビューに含まれます。 今後のアップデートでTTDスクリプトを追加する予定です。
TTDの使用開始
タイムトラベルデバッグのプレビューは、ASP.NET(4.8+)を搭載したWindowsを実行しているAzure仮想マシン用のVisual Studio Enterprise 2019の最新バージョンで有効にできます。
Visual Studio Enterpriseの最新バージョンをインストールしたら、次の手順を実行します。
1.タイムトラベルデバッグに必要なプロジェクトを開きます-Azure仮想マシンで公開されているのと同じバージョンのソースコードがあることを確認します。
2. [ デバッグ]> [ スナップショットデバッガーのアタッチ]を選択し、プロジェクトがAzureストレージアカウントと共にデプロイされるAzure仮想マシンを選択します。 初めて接続するときは、Snapshot Debuggerサイト拡張機能をインストールする必要があります。
3. [ Time Travel Debugging ]オプションを選択し、[ Attach ]ボタンをクリックします。 Visual Studioがスナップショットデバッガーモードに入ると、TTDを使用して記録できるようになります。

4.スナップポイントを作成し、タイムトラベルデバッグを有効にするように構成します。 [ スタート] \ [ コレクションの更新]をクリックします 。

5.スナップショットがコンパイルされたら、スナップショットの表示をクリックします。コマンドバーを使用して、記録されたメソッド内を行き来できます。

TTDプレビューの制限
TTDの初期プレビュー段階で、Azure仮想マシンで実行されるAMD64 Webアプリケーションをサポートします。 このエントリにより、実行中のプロセスに大きなオーバーヘッドが追加され、プロセスのサイズとアクティブなスレッドの数に応じて速度が低下することが予想されます。 また、次のシナリオの一部でデバッグの低下が予想されます。
- GCの圧縮フェーズ中。
- スナップポイントを含まないメソッドを入力する場合など、最適化されたメソッドを通過します。
- アプリケーションが内部的にアプリケーションドメインをダウンロードまたはアンロードする場合。
- 記録は、スナップポイントによって呼び出されたストリームでのみ発生します。 その後、代替スレッドに影響を与えるコードも劣化します。
注意:非同期の因果関係も記録しません。
予備テスト中、TTDファイルのサイズは、セッションの期間とWebアプリケーションの期間に応じて、数百メガバイトから数ギガバイトの範囲であることがわかりました。 ただし、スナップショットデバッガーセッションが完了し、アプリケーションプールが再起動されると、TTDによって作成されたファイルがクリーンアップされます。 プレリリースでは、少なくとも8 GBのRAMを搭載した仮想マシンを使用することもお勧めします。
今すぐTTDをお試しください!
このプレビュー機能がAzureのデバッグの改善にどのように役立つかについて非常に興奮していますが、これはほんの始まりに過ぎません。 私たちのチームは、Visual Studioの今後のリリースに追加する予定の追加TTD機能の開発と作成を続けています。
フィードバックをお待ちしています!