Time Travel Debuggingの知識マップ(知識グラフ)
type: Dataset
description: Time Travel Debugging(TTD)は、プロセスの命令実行を丸ごと録画してあとから前後に再生できるWinDbgの機能で、録画は管理者権限を要する操作で、記録した命令実行は.runトレースファイルに保存され、WinDbgが再生用にインデックスファイル(.idx)を作って使います。録画は5〜20倍の速度低下とトレースの肥大化を招くため、TTD.exeのリングバッファ(-ring / -maxFile)・モジュール限定(-module)・手動録画(-recordmode Manual)・監視モード(-monitor)で録る範囲を構成し、リングバッファとモジュール限定は肥大化を、モジュール限定と手動録画はオーバーヘッドを軽減します。いつ起きるか分からない長期稼働の不具合にはリングバッファを、起動時や特定の起動でだけ出る断続的な不具合には監視モードを勧めます。再生ではトレース内の位置を単位に移動し、TTD.Eventsで例外の位置を確認し、TTD.Memoryとアクセスブレークポイント(ba)からの逆方向実行(g-)でデータ破壊を書いた命令まで遡り、TTD.Callsでハンドルリークの取得・解放やハングの待機呼び出しを確認できますが、TTD.Callsで正しい引数と戻り値を読むにはprivate symbolsを用意することを勧めます。64ビットのSOS拡張を組み合わせれば.NETアプリのマネージド状態も読めます。トレースはメモリ内容を含むため情報漏えいの原因になり得て、保護されたプロセス(PPL)は録画できず、Application Verifierを有効にしたままの録画は再生が遅くなるので勧めません。採取コストの低いダンプ解析を先に行い、経路が要ると分かった案件にTTDを出す順序を勧めます。
language: ja
creator: 合同会社小村ソフト
license: https://creativecommons.org/licenses/by/4.0/
is accessible for free: true
keywords: Time Travel Debugging(TTD)
keywords: TTDの録画
keywords: WinDbg
keywords: 管理者権限
keywords: TTDトレースファイル(.run)
keywords: TTDインデックスファイル(.idx)
keywords: TTD.exe(コマンドライン録画ツール)
keywords: TTDのリングバッファ録画(-ring / -maxFile)
keywords: TTDのモジュール限定録画(-module)
keywords: TTDの手動録画(-recordmode Manual)
keywords: TTDの監視モード(-monitor)
keywords: TTD録画のオーバーヘッド
keywords: TTDトレースの肥大化
keywords: TTDの位置(position)
keywords: TTD.Events(イベント一覧)
keywords: 例外(exception)
keywords: TTD.Callsクエリ
keywords: TTD.Memoryクエリ
keywords: 逆方向実行(g- / p- / t-)
keywords: アクセスブレークポイント(ba)
keywords: 断続的・再現しない不具合
keywords: 長時間運転後クラッシュの切り分け
keywords: データ破壊(不正な値の書き込み)
keywords: ハンドルリーク
keywords: アプリケーションのハング(応答なし)
keywords: private symbols
keywords: 情報漏えい
keywords: 保護されたプロセス(PPL)
keywords: Application Verifier
keywords: ダンプ解析
keywords: SOS拡張
distribution: DataDownload
  encoding format: application/ld+json
distribution: DataDownload
  encoding format: text/turtle
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-overview
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-record
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-ttd-exe-command-line-util
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-troubleshooting
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-extension-tt
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-position-objects
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-overview#things-to-look-out-for
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-trace-file-information
citation: https://github.com/microsoft/WinDbg-Samples/tree/master/TTD/docs
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-event-objects
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-exception-objects
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-memory-objects
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-walkthrough
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-navigation-commands
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-replay
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-calls-objects
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-object-model
citation: https://learn.microsoft.com/windows-hardware/drivers/debuggercmds/time-travel-debugging-extension-positions
about: article

合同会社小村ソフト
type: Organization

Time Travel Debugging(TTD)
type: Concept
definition: プロセスの命令実行を丸ごと録画し、あとから前にも後ろにも再生できるWinDbgの機能。ダンプが取り逃がす失敗までの実行経路を残す。
alternative label: TTD
alternative label: タイムトラベルデバッグ
alternative label: Time Travel Debugging
requires: WinDbg
uses: TTDの録画
uses: TTDの位置(position)

WinDbg
type: Concept
definition: クラッシュダンプやハングしたプロセスの状態をカーネル/ユーザーモードで解析するためのMicrosoft製デバッガー。SOS拡張によるマネージドヒープ解析や、Application Verifierの検出結果の解析にも使われる。
alternative label: Debugging Tools for Windows
uses: TTDインデックスファイル(.idx)

TTDの録画
type: Concept
definition: 対象プロセスに録画エンジンを注入し、実行された命令を命令単位で記録する操作と、その記録内容。管理者権限を要し、対象プロセスを大きく遅くする。
alternative label: TTD録画
alternative label: トレースの記録
alternative label: TTD recording
broader: Time Travel Debugging(TTD)
requires: 管理者権限
stored in: TTDトレースファイル(.run)
may cause: TTD録画のオーバーヘッド
may cause: TTDトレースの肥大化
incompatible with: 保護されたプロセス(PPL)

管理者権限
type: Concept
definition: コンピューター全体の設定を変更できる権限。
alternative label: 昇格

TTDトレースファイル(.run)
type: Concept
definition: TTDの録画中の命令実行を保存するファイル。活動中は毎秒5〜50MB成長し、上限は無い。メモリ内容を含む。
alternative label: .run
alternative label: トレースファイル
broader: Time Travel Debugging(TTD)

TTDインデックスファイル(.idx)
type: Concept
definition: WinDbgがTTDトレースを効率よく再生・メモリ照会するための補助データ。トレースの1〜2倍の大きさで、.runを開くと自動生成される。
alternative label: .idx
alternative label: インデックスファイル
broader: Time Travel Debugging(TTD)

TTD.exe(コマンドライン録画ツール)
type: Concept
definition: WinDbgを入れずにTTDトレースを録画するためのコマンドラインツール。launch・attach・monitorの3モードと、録画範囲を絞るオプションを持つ。
alternative label: TTD.exe
alternative label: ttd.exe
broader: Time Travel Debugging(TTD)
implements: TTDの録画
configured by: TTDのリングバッファ録画(-ring / -maxFile)
configured by: TTDのモジュール限定録画(-module)
configured by: TTDの手動録画(-recordmode Manual)
configured by: TTDの監視モード(-monitor)

TTDの位置(position)
type: Concept
definition: TTDトレース内の時刻を表す、シーケンシング番号とステップ数の16進数2組(xx:yy)。!ttやSeekTo()で移動し、ToSystemTime()でおおよその実時刻に変換できる。
alternative label: Time Travel Position
alternative label: トレース内の位置
broader: Time Travel Debugging(TTD)

TTD録画のオーバーヘッド
type: Concept
definition: TTDで録画中の対象プロセスが被る性能影響。アプリと録画オプションによって5〜20倍以上遅くなる。
alternative label: 録画中の速度低下
broader: Time Travel Debugging(TTD)

TTDトレースの肥大化
type: Concept
definition: TTDトレースが録画中に毎秒5〜50MB成長し、上限無くディスクを消費すること。ディスクが尽きると録画は静かに待ち、不完全なトレースになる。
alternative label: トレースファイルの成長
broader: Time Travel Debugging(TTD)

TTDのリングバッファ録画(-ring / -maxFile)
type: Concept
definition: TTD.exeのオプション。トレースを指定サイズのリングバッファに書き、その大きさに収まる録画の最後の部分だけを残す。
alternative label: -ring
alternative label: -maxFile
alternative label: リングバッファ録画
broader: TTD.exe(コマンドライン録画ツール)
mitigates: TTDトレースの肥大化

TTDのモジュール限定録画(-module)
type: Concept
definition: TTD.exeのオプション。指定したモジュールとそれが呼び出すコードだけを録画し、それ以外の実行はフルスピードで走らせる。
alternative label: -module
alternative label: モジュール限定録画
broader: TTD.exe(コマンドライン録画ツール)
mitigates: TTD録画のオーバーヘッド
mitigates: TTDトレースの肥大化

TTDの手動録画(-recordmode Manual)
type: Concept
definition: TTD.exeのオプション。プログラムがTTDのインプロセス録画APIを呼んだときだけ録画し、それまではフルスピードで走らせる。
alternative label: -recordmode Manual
alternative label: インプロセス録画API
broader: TTD.exe(コマンドライン録画ツール)
mitigates: TTD録画のオーバーヘッド

TTDの監視モード(-monitor)
type: Concept
definition: TTD.exeのモード。指定したプログラムが起動するたびに、通常の権限のまま録画する。断続的な問題や起動時の問題を捕まえる用途。
alternative label: -monitor
alternative label: 監視モード
broader: TTD.exe(コマンドライン録画ツール)

長時間運転後クラッシュの切り分け
type: Concept
definition: 数日〜数週間の連続稼働後にだけ発生する障害を、資源の増え方と失敗経路の観測から原因究明する調査手法。
alternative label: Long-Run Crash Investigation

断続的・再現しない不具合
type: Concept
definition: 発生条件が分からず、手元で再現できない不具合。起動のたびや長期稼働中にまれに起きるものを含む。
alternative label: 再現しない不具合
alternative label: 間欠的な不具合
alternative label: intermittent issue

例外(exception)
type: Concept
definition: プロセス内で発生したハードウェア例外(アクセス違反など)またはソフトウェア例外。アプリが後で処理したかどうかは問わない。
alternative label: ハードウェア例外
alternative label: ソフトウェア例外
alternative label: SEH例外
verified by: TTD.Events(イベント一覧)

TTD.Events(イベント一覧)
type: Concept
definition: TTDトレース内のスレッド作成・終了、モジュールのロード・アンロード、例外をイベントとして列挙するデータモデルのコレクション。例外の位置へ移動する入口になる。
alternative label: @$curprocess.TTD.Events
alternative label: TTDのイベントオブジェクト
broader: Time Travel Debugging(TTD)

データ破壊(不正な値の書き込み)
type: Concept
definition: 変数や構造体が本来あり得ない値に書き換えられる不具合。ダンプには壊れた値だけが写り、書いた主体は写らない。
alternative label: 不正な値
alternative label: 値の破壊
alternative label: メモリの上書き
verified by: TTD.Memoryクエリ

TTD.Memoryクエリ
type: Concept
definition: 指定したアドレス範囲への読み・書き・実行アクセスをTTDトレース全体から集めるクエリ。その値を最後に書いた位置を特定できる。
alternative label: @$cursession.TTD.Memory
alternative label: TTDのMemoryオブジェクト
broader: Time Travel Debugging(TTD)

逆方向実行(g- / p- / t-)
type: Concept
definition: TTDトレース上で時間を逆向きに進めるWinDbgのコマンド。g-はブレークポイントかイベントかトレース先頭まで、p-とt-は1命令ずつ戻る。
alternative label: g-
alternative label: p-
alternative label: t-
alternative label: Go Back
alternative label: Step Back
broader: Time Travel Debugging(TTD)

アクセスブレークポイント(ba)
type: Concept
definition: 指定したアドレスへの読み・書き・実行アクセスで止まるWinDbgのブレークポイント。TTDでは逆方向実行と組み合わせて、値を最後に書いた位置まで戻るのに使う。
alternative label: ba
alternative label: Break on Access
alternative label: メモリアクセスブレークポイント
should precede: 逆方向実行(g- / p- / t-)

private symbols
type: Concept
definition: ローカル変数・型・引数などを含む、完全に近い内部情報を持つシンボル情報。
recommended for: TTD.Callsクエリ

TTD.Callsクエリ
type: Concept
definition: 指定した関数の呼び出しをTTDトレース全体から集め、位置・スレッド・引数・戻り値・実時刻でLINQ風に絞り込み・集計できるクエリ。PDBのシンボル情報を前提とする。
alternative label: @$cursession.TTD.Calls
alternative label: TTDのCallsオブジェクト
broader: Time Travel Debugging(TTD)

ハンドルリーク
type: Concept
definition: 参照カウントやハンドルカウントの数え違いなどにより、不要になったハンドル(ファイル・イベント・スレッド・GDIオブジェクト・アクセストークンなどカーネルオブジェクトへの参照)が解放されずに積み上がっていく状態。
alternative label: Handle Leak

アプリケーションのハング(応答なし)
type: Concept
definition: ウィンドウが応答なしになり、UIスレッドなどが何らかの待機から戻らない状態である。
alternative label: ハング
alternative label: 応答なし

情報漏えい
type: Concept
definition: 本来外部に出るべきでない情報が組織の外へ流出すること。
alternative label: Information Leakage

保護されたプロセス(PPL)
type: Concept
definition: Windowsが改変や注入から保護するプロセスの種類。TTDは自分を注入できないため録画できない。
alternative label: PPL
alternative label: Protected Process Light
alternative label: 保護プロセス

Application Verifier
type: Concept
definition: Windowsのuser-modeアプリに対するランタイム検証ツールで、OS API利用や資源の扱い方を監視し誤用の検出や意図的な失敗の注入を行う。
alternative label: AppVerifier
alternative label: appverif.exe
not recommended for: TTDの録画

ダンプ解析
type: Concept
definition: クラッシュやハングなどで取得したプロセスのダンプファイルから、スタックや変数、型を人間が読める名前やソース行に変換して調べる作業。
should precede: Time Travel Debugging(TTD)

SOS拡張
type: Concept
definition: マネージドヒープの情報収集、ヒープ破損の検出、ランタイム内部データ型の表示など、CLRの内部をデバッガー上から読むためのデバッガー拡張である。
alternative label: Son of Strike
alternative label: sos.dll
broader: WinDbg

subject: Time Travel Debugging(TTD)
predicate: requires
object: WinDbg
description: TTDはWinDbgに統合されており、トレースの再生(位置の移動、逆方向の実行、イベントとクエリ)はWinDbgで行う。録画もWinDbgのUIから行える。
evidence: time-travel-debugging-overview
verified at: 2026-09-02
certainty: established

subject: Time Travel Debugging(TTD)
predicate: uses
object: TTDの録画
description: TTDは、対象プロセスの命令実行を録画する操作と、その記録をWinDbgで前後に再生する操作から成る。録画はWinDbgのUIまたはTTD.exeで行う。
evidence: time-travel-debugging-overview
evidence: time-travel-debugging-record
verified at: 2026-09-02
certainty: established

subject: TTDの録画
predicate: requires
object: 管理者権限
description: 録画には昇格した権限が必要で、WinDbgは管理者として実行し、TTD.exeは管理者コマンドプロンプトから実行する。既存のトレースを開いて再生するだけなら昇格は要らない。
evidence: time-travel-debugging-overview
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: established

subject: TTDの録画
predicate: storedIn
object: TTDトレースファイル(.run)
description: 録画で記録した命令実行は.runトレースファイルに保存される。共有するのはこの.runだけで足りる。
evidence: time-travel-debugging-overview
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: established

subject: WinDbg
predicate: uses
object: TTDインデックスファイル(.idx)
description: WinDbgはトレースを効率よく再生・メモリ照会するために.idxインデックスファイルを使う。録画停止時に作られ、.runを開いたときにも自動生成され、!index -statusで状態を確認し!index -forceで作り直せる。
evidence: time-travel-debugging-overview
evidence: time-travel-debugging-troubleshooting
verified at: 2026-09-02
certainty: established

subject: TTD.exe(コマンドライン録画ツール)
predicate: implements
object: TTDの録画
description: TTD.exeはWinDbgを入れないPCでの録画や自動化のためのコマンドライン録画ツールで、launch・attach・monitorの3モードでTTDの録画を行う。再生はWinDbgで行う。
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: established

subject: Time Travel Debugging(TTD)
predicate: uses
object: TTDの位置(position)
description: トレース内の時刻はシーケンシング番号とステップ数の16進数2組で表す位置で扱い、!ttやSeekTo()で移動し、ToSystemTime()でおおよその実時刻に変換してログの時刻と突き合わせられる。
evidence: time-travel-debugging-extension-tt
evidence: time-travel-debugging-position-objects
verified at: 2026-09-02
certainty: established

subject: TTDの録画
predicate: mayCause
object: TTD録画のオーバーヘッド
description: 録画中の対象プロセスは、アプリと録画オプションによって5〜20倍以上遅くなる。
evidence: time-travel-debugging-ttd-exe-command-line-util
evidence: things-to-look-out-for
verified at: 2026-09-02
certainty: established

subject: TTDの録画
predicate: mayCause
object: TTDトレースの肥大化
description: トレースは活動中に毎秒5〜50MB成長し、数分で数GBになり得て、最大サイズの上限は無い。ディスクが尽きると録画は静かに待ち、不完全なトレースになる。
evidence: time-travel-debugging-trace-file-information
verified at: 2026-09-02
certainty: established

subject: TTD.exe(コマンドライン録画ツール)
predicate: configuredBy
object: TTDのリングバッファ録画(-ring / -maxFile)
description: -ringと-maxFileで、トレースを指定サイズのリングバッファに書き、録画の最後の部分だけを残すように構成できる。
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: established

subject: TTD.exe(コマンドライン録画ツール)
predicate: configuredBy
object: TTDのモジュール限定録画(-module)
description: -moduleで、指定したモジュールとそれが呼び出すコードだけを録画し、それ以外はフルスピードで走らせるように構成できる。
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: established

subject: TTD.exe(コマンドライン録画ツール)
predicate: configuredBy
object: TTDの手動録画(-recordmode Manual)
description: -recordmode Manualで、プログラムがインプロセス録画APIを呼んだときだけ録画するように構成できる。
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: established

subject: TTD.exe(コマンドライン録画ツール)
predicate: configuredBy
object: TTDの監視モード(-monitor)
description: -monitorで、指定したプログラムが起動するたびに通常の権限のまま録画するように構成でき、-cmdLineFilterでコマンドラインにより対象を絞れる。
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: established

subject: TTDのリングバッファ録画(-ring / -maxFile)
predicate: mitigates
object: TTDトレースの肥大化
description: リングバッファ録画ではファイルが-maxFileの上限を超えて成長せず、その大きさに収まる直近の録画だけが残る。
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: established

subject: TTDのモジュール限定録画(-module)
predicate: mitigates
object: TTD録画のオーバーヘッド
description: モジュール限定録画では指定モジュール外の実行がフルスピードで走るため、録画のオーバーヘッドが大きく減る。
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: established

subject: TTDのモジュール限定録画(-module)
predicate: mitigates
object: TTDトレースの肥大化
description: モジュール限定録画では指定モジュール外の命令が記録されないため、トレースファイルのサイズが大きく減る。
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: established

subject: TTDの手動録画(-recordmode Manual)
predicate: mitigates
object: TTD録画のオーバーヘッド
description: 手動録画ではアプリがAPIで録画を始めるまでフルスピードで走るため、異常の予兆がある区間だけ録れば録画のオーバーヘッドとトレースサイズを抑えられる。
evidence: time-travel-debugging-ttd-exe-command-line-util
evidence: docs
verified at: 2026-09-02
certainty: established

subject: TTDのリングバッファ録画(-ring / -maxFile)
predicate: recommendedFor
object: 長時間運転後クラッシュの切り分け
description: いつ起きるか分からない長期稼働の不具合では、動いているプロセスにリングバッファで付き、監視が症状を検知したら-stopで録画を止めて直近の区間だけを残す設計を本記事は勧める。バッファは検知から停止までのラグを吸収できる大きさにし、停止後もTTDは外れないので再起動まで運用に含める。
evidence: time-travel-debugging-ttd-exe-command-line-util
evidence: time-travel-debugging-trace-file-information
verified at: 2026-09-02
certainty: context-dependent

subject: TTDの監視モード(-monitor)
predicate: recommendedFor
object: 断続的・再現しない不具合
description: 起動直後や特定の起動でだけ出る断続的な不具合には、起動のたびに録画する監視モードを本記事は勧める。公式の使い分け表でも監視モードは断続的な問題や起動時の問題を捕まえる用途とされる。
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: context-dependent

subject: Time Travel Debugging(TTD)
predicate: recommendedFor
object: 断続的・再現しない不具合
description: 再現しない・断続的な不具合でダンプが結果しか示さないとき、録画範囲を設計したうえでTTDで経路を残すことを本記事は勧める。録画のオーバーヘッドと肥大化があるため、無条件の常時録画は勧めない。
evidence: time-travel-debugging-overview
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: context-dependent

subject: 例外(exception)
predicate: verifiedBy
object: TTD.Events(イベント一覧)
description: @$curprocess.TTD.EventsのExceptionイベントに例外の位置・種類(Software/Hardware)・コード・プログラムカウンターが入り、[Time Travel]リンクでその位置へ移動できる。イベントはアプリが後で処理した例外も含み、処理されたかどうかは区別しない。
evidence: time-travel-debugging-event-objects
evidence: time-travel-debugging-exception-objects
verified at: 2026-09-02
certainty: established

subject: データ破壊(不正な値の書き込み)
predicate: verifiedBy
object: TTD.Memoryクエリ
description: TTD.Memoryで対象アドレス範囲への書き込みアクセスを集め、.Last()の位置へ移動すれば、その値を最後に書いた命令が分かる。
evidence: time-travel-debugging-memory-objects
evidence: time-travel-debugging-walkthrough
verified at: 2026-09-02
certainty: established

subject: データ破壊(不正な値の書き込み)
predicate: verifiedBy
object: 逆方向実行(g- / p- / t-)
description: 壊れた値のアドレスにアクセスブレークポイントを置いてg-で逆方向に実行すると、その変数が最後に書かれた位置で止まり、値が別の変数由来なら同じ手順を繰り返して壊した命令まで遡れる。
evidence: time-travel-debugging-walkthrough
evidence: time-travel-debugging-navigation-commands
verified at: 2026-09-02
certainty: context-dependent

subject: アクセスブレークポイント(ba)
predicate: shouldPrecede
object: 逆方向実行(g- / p- / t-)
description: g-を止めるイベントは順方向のgと同じなので、baでアクセスブレークポイントを置いてからg-を打つ順序で、条件が最後に成立した位置まで一気に戻れる。
evidence: time-travel-debugging-replay
evidence: time-travel-debugging-walkthrough
verified at: 2026-09-02
certainty: established

subject: private symbols
predicate: recommendedFor
object: TTD.Callsクエリ
description: TTD.CallsはPDBのシンボル情報から引数の数と型・戻り値の型・呼び出し規約を決める。public symbolsだけでも関数名と既定の4つの64ビット整数引数で問い合わせでき、シンボルが無ければ関数名がUnknownOrMissingSymbolsになるが動く。正しい引数と戻り値を読むには、公式ドキュメントも本記事もprivate symbols(完全なPDB)を勧める。
evidence: time-travel-debugging-calls-objects
evidence: time-travel-debugging-object-model
verified at: 2026-09-02
certainty: established

subject: ハンドルリーク
predicate: verifiedBy
object: TTD.Callsクエリ
description: 自社DLLに限定して録ったトレースでCreateFileWとCloseHandleの呼び出しを集め、CreateFileWの戻り値(ハンドル値)とCloseHandleの第1引数(Parameters[0])を突き合わせると、閉じられていないハンドル値が残る。そのCreateFileW呼び出しのReturnAddressで漏らしている呼び出し元が分かる。リークの有無と量の観測は別の軽い道具が向く。
evidence: time-travel-debugging-calls-objects
verified at: 2026-09-02
certainty: context-dependent

subject: アプリケーションのハング(応答なし)
predicate: verifiedBy
object: TTD.Callsクエリ
description: 待機APIの呼び出しをTTD.Callsで集め、SystemTimeStart / SystemTimeEndと!positionsの各スレッドの位置から、どのスレッドがいつ何を待ち始めたかを並べて待ちの連鎖を組み立てられる。アイドル中はトレースが成長しないため、待ち時間そのものは命令として写らない。
evidence: time-travel-debugging-calls-objects
evidence: time-travel-debugging-extension-positions
evidence: time-travel-debugging-trace-file-information
verified at: 2026-09-02
certainty: context-dependent

subject: TTDトレースファイル(.run)
predicate: mayCause
object: 情報漏えい
description: トレースにはプロセスのメモリ内容が含まれ、ファイルパス・レジストリ・メモリやファイルの中身など個人情報や秘密情報が入り得るため、共有と保管を機密ファイルとして設計しないと情報漏えいにつながる。
evidence: time-travel-debugging-overview
evidence: time-travel-debugging-ttd-exe-command-line-util
verified at: 2026-09-02
certainty: context-dependent

subject: TTDの録画
predicate: incompatibleWith
object: 保護されたプロセス(PPL)
description: Protected Process Light(PPL)などWindowsの保護プロセスにはTTDが自分を注入できず、録画できない。
evidence: things-to-look-out-for
verified at: 2026-09-02
certainty: established

subject: Application Verifier
predicate: notRecommendedFor
object: TTDの録画
description: Application Verifierを有効にしたまま録画すると、そのメモリの使い方の関係で再生時の性能が目立って悪くなるため、録画時は無効にする。
evidence: time-travel-debugging-troubleshooting
verified at: 2026-09-02
certainty: established

subject: ダンプ解析
predicate: shouldPrecede
object: Time Travel Debugging(TTD)
description: 採取コストがほぼゼロのダンプとログで状態を掴み、経路が要ると分かった案件にだけ録画範囲を設計してTTDを出す順序を本記事は勧める。TTDのオーバーヘッドとトレースが機密情報を含む性質から、逆の順序を取る理由は無い。
evidence: time-travel-debugging-overview
verified at: 2026-09-02
certainty: established

subject: Time Travel Debugging(TTD)
predicate: uses
object: SOS拡張
description: 64ビットモードで動くSOS拡張をWinDbgのTTDトレース上で使ってマネージドコードをデバッグでき、例外イベントの位置へ移動してから!clrstackや!peでマネージドの状態を読める。
evidence: time-travel-debugging-overview
verified at: 2026-09-02
certainty: context-dependent