Time Travel Debugging (Preview) の Lab

ユーザーモードのプログラムで、クラッシュダンプでは原因がわからない問題を、問題が発生するまでの経緯をさかのぼって調べたいと思ったことはありませんか?それを実現してくれるのがTime Travel Debugging (TTD) です。TTD は、まだプレビューですが、WDK 1803 で TTD の使い方についてのLab が以下のドキュメントとして公開されました。   Time Travel Debugging – Sample App Walkthrough < https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/time-travel-debugging-walkthrough >   そこで、今回は、このLab の手順をご案内します。これにより、読者の方のデバッグの作業効率が上がれば幸いです。   ※ ただし、あくまでもプレビューですので、今後上記ドキュメントの内容は更新される可能性がある点にご注意ください。 ※ メモリダンプがスナップショットであるのに対し、TTD で取得できるトレースログはその連続となるため、必要なメモリやディスクの容量が多くなります。そのため、再現手順が確立していない問題や再現までに時間がかかる問題に対してなど、長期間にわたる実行には向かない点にもご注意ください。   手順の概要   失敗するプログラムのTime Travel Trace をキャプチャします。 dx (Display Debugger Object Model Expression) コマンドを使って、Time Travel Trace に記録された例外イベントを見つけます。 !tt (time travel) コマンドを使って、そのトレースの中の例外イベントの位置まで移動(travel) します。 トレースのその位置から、失敗したコードまでステップ実行でさかのぼります。 失敗したコードで、ローカル変数を確認し、誤った値を含む変数の仮説を立てます。…