知識マップ: Process Monitor(ProcMon)実践ガイド ── 「設定が読まれない」「ACCESS DENIED」を10分で特定する

記事「Process Monitor(ProcMon)実践ガイド ── 「設定が読まれない」「ACCESS DENIED」を10分で特定する」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

この記事は、環境依存の不具合調査でコードを読む前にProcMonで実際のファイル・レジストリアクセスを記録することの実務手順を扱う。まずProcess Nameでプロセスを絞り、次にResultで異常系に絞る2段階フィルタが定石で、NAME NOT FOUND・ACCESS DENIED・SHARING VIOLATIONは連なりの終わり方まで読んで初めて原因と言える。DLLが見つからない問題や設定ファイルがVirtualStoreやWOW64のリダイレクトで意図しない場所に化けている問題は、このNAME NOT FOUNDの連鎖やPath列から特定できる。一方でパケットの中身やCPU時間の内訳、クラッシュ瞬間のスタックはProcMonの守備範囲外であり、Process Explorer・PerfView・WinDbg・pktmonなど他ツールへの使い分けが必要になる。

Process Monitor(ProcMon)実践活用の知識マップProcMonのフィルタ手順とResult列の読み方が、DLL探索やVirtualStore・WOW64の問題をどう特定するかを示し、Process Explorerなど他ツールとの守備範囲の違いをまとめた図。推奨される対応利用する利用する利用する利用する利用する利用する利用するで確認できるで確認できるで確認できるで確認できる前提とするで確認できる用いるのは非推奨用いるのは非推奨用いるのは非推奨用いるのは非推奨Process Monitor(procmon.exe)環境依存の不具合調査ProcMonのフィルタ(2段階絞り込み)PMLファイル(Process Monitor Log形式)ブートタイムロギング(Enable Boot Logging)NAME NOT FOUND(Result値)ACCESS DENIED(Result値)SHARING VIOLATION(Result値)BUFFER OVERFLOW(Result値)DLLの検索順序VirtualStoreへの仮想化WOW64リダイレクトProcess Explorer管理者権限ハンドルリークパケットキャプチャによる通信調査PerfView / dotnet-traceWinDbgApplication Verifier

概念間の関係(全18件)

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

主要概念の定義

Process Monitor(procmon.exe)
ファイルI/O・レジストリ・プロセス/スレッド活動をリアルタイムに監視できるSysinternalsのツール。Advanced Outputを有効にすると、IRPやファストI/Oのカーネル側の語彙で操作を表示する。
環境依存の不具合調査
特定の環境や端末でだけ起きる不具合の原因を、コードを読むより先に、実際に何が起きたかの記録(ファイル・レジストリアクセスなど)から特定していく調査の進め方。
DLLの検索順序
Windowsが実行ファイルの起動時に限らず、LoadLibrary系APIによる動的な読み込み時も含めて、DLL redirectionやKnown DLLsなどの前段ルールを経てDLLを探す、決まった順序でフォルダーを辿る仕組み。
VirtualStoreへの仮想化
Program Files配下など管理者権限が必要な場所への書き込みが、実際にはユーザーごとのVirtualStoreフォルダーへリダイレクトされ、読み書きが別の場所に化けるWindowsの互換機能。
WOW64リダイレクト
32bitプロセスからのシステムフォルダーやレジストリへのアクセスが、WOW64によって別のビューへ自動的に振り替えられる仕組み。見ているつもりの場所と実際にアクセスする場所がずれる原因になる。
SHARING VIOLATION(Result値)
ProcMonのResult列に出る、他のプロセスが排他的にファイルを開いているために生じる共有違反を示す値。ファイルロックの競合原因の特定に使う。
ハンドルリーク
参照カウントやハンドルカウントの数え違いなどにより、不要になったハンドル(ファイル・イベント・スレッド・GDIオブジェクト・アクセストークンなどカーネルオブジェクトへの参照)が解放されずに積み上がっていく状態。

機械可読データ

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