タイム トラベル デバッグ - トレースの記録

Small time travel logo showing clock.

このセクションでは、タイム トラベル デバッグ (TTD) トレースを記録する方法について説明します。 WinDbg プレビューでトレースを記録するには、 実行可能ファイルの起動 (詳細)プロセスへのアタッチの 2 つの方法があります。

実行可能ファイルの起動 (詳細)

実行可能ファイルを起動し、TTD トレースを記録するには、次の手順に従います。

  1. WinDbg プレビューで、FileStart>debuggingLaunch>実行可能ファイル (詳細) を選択します。

  2. 記録するユーザー モード実行可能ファイルのパスを入力するか、[ 参照 ] を選択して実行可能ファイルに移動します。 WinDbg プレビューで [実行可能ファイルの起動] メニューを操作する方法については、「 WinDbg プレビュー - ユーザー モード セッションを開始する」を参照してください。

    Screen shot of WinDbg Preview showing start recording checkbox in launch executable (advanced) screen.

  3. [ Time Travel Debugging でプロセスを記録する ] ボックスをオンにして、実行可能ファイルが起動されたときにトレースを記録します。

  4. [構成と記録] を選択すると、トレース ファイルの場所を構成できます。

    Screen shot of Configure recording dialog showing a browse button and path listed.

  5. [OK] を選択して実行可能ファイルを起動し、記録を開始します。

  6. トレースが記録されていることを示す記録ダイアログが表示されます。

    Screenshot that shows the TTD recording popup

  7. 記録の詳細については、「記録方法」を参照してください。

プロセスへのアタッチ

プロセスにアタッチし、TTD トレースを記録するには、次の手順に従います。

  1. WinDbg プレビューで、処理する FileStart>debuggingAttach> を選択します。

  2. トレースするユーザー モード プロセスを選択します。 WinDbg プレビューでの プロセス へのアタッチ メニューの操作については、「 WinDbg プレビュー - ユーザー モード セッションを開始する」を参照してください。

    Screen shot of WinDbg Preview showing start recording checkbox.

  3. 実行可能ファイルの起動時にトレースを作成するには、[ Time Travel Debugging を使用してプロセスを記録する ] ボックスをオンにします。

  4. [ アタッチ] を選択して記録を開始します。

  5. トレースが記録されていることを示す記録ダイアログが表示されます。

    TTD recording popup showing stop and debug as well as cancel options.

  6. 記録の詳細については、「記録方法」を参照してください。

記録方法

  1. プロセスが記録されているため、ここでデバッグする問題を発生させる必要があります。 問題のあるファイルを開くか、アプリ内の特定のボタンを選択して、関心のあるイベントが発生する可能性があります。

  2. 記録ダイアログ ボックスが表示されている間は、次のことができます。

    • 停止とデバッグ - これを選択すると、記録が停止され、トレース ファイルが作成され、トレース ファイルが開き、デバッグが開始されます。
    • キャンセル - これを選択すると、記録が停止され、トレース ファイルが作成されます。 トレース ファイルは後で開くことができます。
  3. 記録が完了したら、アプリを閉じるか 、[停止してデバッグ] をクリックします

    注意

    停止とデバッグとキャンセルの両方で、関連付けられているプロセスが終了します。

  4. 記録されているアプリケーションが終了すると、トレース ファイルが閉じられ、ディスクに書き出されます。 これは、プログラムがクラッシュした場合にも当てはめます。

  5. トレース ファイルが開かれると、デバッガーによってトレース ファイルのインデックスが自動的に作成されます。 インデックス作成により、より正確で高速なメモリ値の検索が可能になります。 このインデックス作成プロセスは、より大きなトレース ファイルに時間がかかります。

    ...
    00007ffc`61f789d4 c3              ret
    0:000> !index
    Indexed 1/1 keyframes
    Successfully created the index in 96ms.
    

    注意

    キーフレームは、インデックス作成に使用されるトレース内の場所です。 キーフレームは自動的に生成されます。 トレースが大きいほど、キーフレームが多くなります。 トレースのインデックスが作成されると、キーフレームの数が表示されます。

  6. この時点で、トレース ファイルの先頭に移動し、前後に移動する準備が整います。

    ヒント

    ブレークポイントを使用することは、関心のあるイベントでコードの実行を一時停止する一般的な方法です。 TTD に固有のブレークポイントを設定し、トレースが記録された後にブレークポイントがヒットするまで時間をさかのぼって移動できます。 問題が発生した後にプロセスの状態を確認し、ブレークポイントの最適な場所を判断する機能により、追加のデバッグ ワークフローが有効になります。 過去にブレークポイントを使用した例については、「 タイム トラベル デバッグ - サンプル アプリのチュートリアル」を参照してください。

次の手順

これで TTD トレースが記録されたので、トレースを再生したり、トレース ファイルを操作したりできます(たとえば、同僚と共有するなど)。 詳細については、次のトピックを参照してください。

Time Travel Debugging - トレースの再生

Time Travel Debugging - トレース ファイルの使用

Time Travel Debugging - トラブルシューティング

Time Travel Debugging - サンプル アプリのチュートリアル

参照

Time Travel Debugging - 概要