知識マップ: Time Travel Debugging ── 長期稼働で再現しない不具合を「録画」して巻き戻す

記事「Time Travel Debugging ── 長期稼働で再現しない不具合を「録画」して巻き戻す」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

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を出す順序を勧めます。

Time Travel Debuggingの知識マップTime Travel Debugging(TTD)がWinDbgを前提とし、管理者権限を要する録画で命令実行を.runトレースに記録し、TTD.exeがリングバッファ・モジュール限定・手動録画・監視モードで録画範囲を構成すること、録画のオーバーヘッドとトレースの肥大化をそれらが軽減すること、再生ではTTD.Events・TTD.Calls・TTD.Memoryとアクセスブレークポイント・逆方向実行で例外やデータ破壊・ハンドルリーク・ハングを確認できること、トレースが情報漏えいの原因になり得ること、PPLと両立しないこと、Application Verifier併用が非推奨なこと、ダンプ解析を先に行うべきことを示した図前提とする利用する前提とするに保存される利用する実装を担う利用する原因になり得る原因になり得るで構成できるで構成できるで構成できるで構成できる軽減する軽減する軽減する軽減する推奨される対応推奨される対応推奨される対応で確認できるで確認できるで確認できるより先に行うべき推奨される対応で確認できるで確認できる原因になり得る両立しない用いるのは非推奨より先に行うべき利用するTime Travel Debugging(TTD)WinDbgTTDの録画管理者権限TTDトレースファイル(.run)TTDインデックスファイル(.idx)TTD.exe(コマンドライン録画ツール)TTDの位置(position)TTD録画のオーバーヘッドTTDトレースの肥大化TTDのリングバッファ録画(-ring / -maxFile)TTDのモジュール限定録画(-module)TTDの手動録画(-recordmode Manual)TTDの監視モード(-monitor)長時間運転後クラッシュの切り分け断続的・再現しない不具合例外(exception)TTD.Events(イベント一覧)データ破壊(不正な値の書き込み)TTD.Memoryクエリ逆方向実行(g- / p- / t-)アクセスブレークポイント(ba)private symbolsTTD.Callsクエリハンドルリークアプリケーションのハング(応答なし)情報漏えい保護されたプロセス(PPL)Application Verifierダンプ解析SOS拡張

概念間の関係(全32件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

Time Travel Debugging(TTD)
プロセスの命令実行を丸ごと録画し、あとから前にも後ろにも再生できるWinDbgの機能。ダンプが取り逃がす失敗までの実行経路を残す。
TTDの録画
対象プロセスに録画エンジンを注入し、実行された命令を命令単位で記録する操作と、その記録内容。管理者権限を要し、対象プロセスを大きく遅くする。
WinDbg
クラッシュダンプやハングしたプロセスの状態をカーネル/ユーザーモードで解析するためのMicrosoft製デバッガー。SOS拡張によるマネージドヒープ解析や、Application Verifierの検出結果の解析にも使われる。
TTD.exe(コマンドライン録画ツール)
WinDbgを入れずにTTDトレースを録画するためのコマンドラインツール。launch・attach・monitorの3モードと、録画範囲を絞るオプションを持つ。
TTDのリングバッファ録画(-ring / -maxFile)
TTD.exeのオプション。トレースを指定サイズのリングバッファに書き、その大きさに収まる録画の最後の部分だけを残す。
TTDのモジュール限定録画(-module)
TTD.exeのオプション。指定したモジュールとそれが呼び出すコードだけを録画し、それ以外の実行はフルスピードで走らせる。
TTDの手動録画(-recordmode Manual)
TTD.exeのオプション。プログラムがTTDのインプロセス録画APIを呼んだときだけ録画し、それまではフルスピードで走らせる。
TTDの監視モード(-monitor)
TTD.exeのモード。指定したプログラムが起動するたびに、通常の権限のまま録画する。断続的な問題や起動時の問題を捕まえる用途。
例外(exception)
プロセス内で発生したハードウェア例外(アクセス違反など)またはソフトウェア例外。アプリが後で処理したかどうかは問わない。
データ破壊(不正な値の書き込み)
変数や構造体が本来あり得ない値に書き換えられる不具合。ダンプには壊れた値だけが写り、書いた主体は写らない。
アクセスブレークポイント(ba)
指定したアドレスへの読み・書き・実行アクセスで止まるWinDbgのブレークポイント。TTDでは逆方向実行と組み合わせて、値を最後に書いた位置まで戻るのに使う。
private symbols
ローカル変数・型・引数などを含む、完全に近い内部情報を持つシンボル情報。
ハンドルリーク
参照カウントやハンドルカウントの数え違いなどにより、不要になったハンドル(ファイル・イベント・スレッド・GDIオブジェクト・アクセストークンなどカーネルオブジェクトへの参照)が解放されずに積み上がっていく状態。
アプリケーションのハング(応答なし)
ウィンドウが応答なしになり、UIスレッドなどが何らかの待機から戻らない状態である。
TTDトレースファイル(.run)
TTDの録画中の命令実行を保存するファイル。活動中は毎秒5〜50MB成長し、上限は無い。メモリ内容を含む。
Application Verifier
Windowsのuser-modeアプリに対するランタイム検証ツールで、OS API利用や資源の扱い方を監視し誤用の検出や意図的な失敗の注入を行う。
ダンプ解析
クラッシュやハングなどで取得したプロセスのダンプファイルから、スタックや変数、型を人間が読める名前やソース行に変換して調べる作業。

機械可読データ

このデータセットについて

作成
合同会社小村ソフト
ライセンス
CC BY 4.0 ── 出典(合同会社小村ソフト)とライセンスへのリンクを明示し、改変した場合はその旨を示すことを条件に、再配布・改変を含めて再利用できます
最終確認日
2026-09-02 ── 収録する関係のうち、最後に出典と照合した日

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。