次の方法で共有


例 10: プロセス内のヒープ メモリ リークを検出する

この例では、Windows 用 Microsoft デバッグ ツールに含まれる GFlags とユーザー モード ダンプ ヒープ (UMDH、umdh.exe) というツールを使用します。

notepad.exe のヒープ メモリのリークを検出するには

  1. notepad.exe イメージ ファイルの ユーザー モード スタック トレース データベース (ust) の作成フラグを設定します。

    次のコマンドでは、GFlags を使用して、ユーザー モード スタック トレース データベース作成フラグを設定します。 /i パラメーターを使用して、イメージ ファイルとフラグの ust の省略形を識別します。

    gflags /i Notepad.exe +ust 
    

    このコマンドの結果として、メモ帳プロセスの新しいインスタンスすべてに対してユーザーモード スタック トレースが作成されます。

  2. シンボル ファイル パスを設定します。

    次のコマンドは、シンボル ファイルのディレクトリへのパスを格納する環境変数を作成します。

    set _NT_SYMBOL_PATH=C:\Windows\symbols
    
  3. メモ帳を起動します。

  4. メモ帳プロセスのプロセス識別子 (PID) を検索します。

    実行中のプロセスの PID は、Windows XP Professional および Windows Server 2003 オペレーティング システムに含まれるタスク マネージャーまたはタスク一覧 (tasklist.exe) から検索できます。 この例のメモ帳 PID は 1228 です。

  5. 実行 UMDH。

    次のコマンドは、UMDH (umdh.exe) を実行します。 -p: パラメーターを使用して、この例では 1228 となっている PID を指定します。 /f: パラメーターを使用して、ヒープ ダンプの出力ファイル notepad.dmp の名前と場所を指定します。

    umdh -p:1228 -f:notepad.dmp 
    

    これに対して、UMDH ではすべての有効なヒープの完全なダンプを notepad.dmp ファイルに書き込みます。