例 10: プロセス内のヒープ メモリ リークを検出する
この例では、Windows 用 Microsoft デバッグ ツールに含まれる GFlags とユーザー モード ダンプ ヒープ (UMDH、umdh.exe) というツールを使用します。
notepad.exe のヒープ メモリのリークを検出するには
notepad.exe イメージ ファイルの ユーザー モード スタック トレース データベース (ust) の作成フラグを設定します。
次のコマンドでは、GFlags を使用して、ユーザー モード スタック トレース データベースの作成フラグを設定します。 /i パラメーターを使用して、イメージ ファイルとフラグの ust の省略形を識別します。
gflags /i Notepad.exe +ust
このコマンドの結果として、メモ帳プロセスの新しいインスタンスすべてに対してユーザーモード スタック トレースが作成されます。
シンボル ファイル パスを設定します。
次のコマンドは、シンボル ファイルのディレクトリへのパスを格納する環境変数を作成します。
set _NT_SYMBOL_PATH=C:\Windows\symbols
メモ帳を起動します。
メモ帳プロセスのプロセス識別子 (PID) を検索します。
実行中のプロセスの PID は、Windows XP Professional および Windows Server 2003 オペレーティング システムに含まれるタスク マネージャーまたはタスク一覧 (tasklist.exe) から検索できます。 この例のメモ帳 PID は 1228 です。
実行 UMDH。
次のコマンドは、UMDH (umdh.exe) を実行します。 -p: パラメーターを使用して、この例では 1228 となっている PID を指定します。 /f: パラメーターを使用して、ヒープ ダンプの出力ファイル notepad.dmp の名前と場所を指定します。
umdh -p:1228 -f:notepad.dmp
これに対して、UMDH ではすべての有効なヒープの完全なダンプを notepad.dmp ファイルに書き込みます。