モダンな開発ツールの多くには、デバッグ支援機能としてプログラムのステップ実行機能やブレークポイントの設定機能があります。これらを利用することにより、任意の時点でのプログラムの振る舞いや変数の内容などを確認できます。

しかしこのデバッグ支援機能は、あくまで開発中のプログラムを対象としたものであり、本番環境にデプロイしたあと、実行中に発生したバグについて調べることはできません。

そこでマイクロソフトは、本番環境で実行中のプログラムの動作内容を記録し、その記録を基にプログラムの動作をVisual Studioで再現することにより、バグが発生する過程を詳細に確認できる機能「Time Travel Debugging」機能のプレビュー版を、正式リリースされたばかりのVisual Studio Enterprise Edition 2019に提供したことを明らかにしました。

Time Travel Debuggingは、プロセスの実行内容を記録し、再生

Time Travel Debuggingを紹介したマイクロソフトの記事 「Introducing Time Travel Debugging for Visual Studio Enterprise 2019から、その機能についての説明を引用しましょう。

Time Travel Debugging (TTD) is a reverse debugging solution that allows you to record the execution of code in an app or process and replay it both forwards and backwards. TTD improves debugging since you can go back in time to better understand the conditions that lead up to a specific bug. Time Travel Debugging（TTD）は、アプリケーションやプロセスの実行を記録し、再生や逆再生の実行ができる、リバースデバッギングのソリューションだ。TTDは特定のバグがどのように引き起こされたのか、その状況をよく理解できるようにその時点まで遡ることができるため、効率よくデバッグできる。

Time Travel Debugging機能は、 「Visual Studio Enterprise 2019 for Azure Virtual Machines」と、ASP.NET 4.8以上の組み合わせで利用可能。

仮想マシンのメモリ容量は8GB以上が推奨されています。また、記録するセッションの長さによって生成されるファイルサイズの大きさは変わりますが、おおむね数百メガバイトから数ギガバイトになり、デバッグが終了すればファイルも自動的に消えるとのことです。

Time Travel Debugging機能は、Windowsのデバッガー「WinDbg」にプレビュー機能としてすでにその技術がプレビュー公開されており、また、Visual Studioですでに提供されている、実行中のプログラムのある時点の状況を把握する「Snapshot Debugger」機能を拡張したものだと説明されています。