ProcDump v11.0

作成者: Mark Russinovich、Andrew Richards

公開日: 2022 年 11 月 3 日

DownloadProcDump のダウンロード(714 KB)

ProcDump for Linux のダウンロード (GitHub)

ZoomIt を使用して作成

はじめに

ProcDump はコマンド ライン ユーティリティであり、その主な目的は、アプリケーションで CPU スパイクを監視し、スパイク中にクラッシュ ダンプを生成することで、管理者または開発者がそれらを使用してスパイクの原因を特定できようにすることです。 ProcDump には、(Windows とタスク マネージャーで使用されるウィンドウ ハングの定義と同じ定義を使用した) ハングしたウィンドウの監視と、未処理の例外の監視も含まれていて、システム パフォーマンス カウンターの値に基づいてダンプを生成できます。 他のスクリプトに埋め込むことができる一般的なプロセス ダンプ ユーティリティとしても機能します。

ProcDump の使用

キャプチャの使用方法:

procdump.exe [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-n <Count>]
            [-s <Seconds>]
            [-c|-cl <CPU_Usage> [-u]]
            [-m|-ml <Commit_Usage>]
            [-p|-pl <Counter> <Threshold>]
            [-h]
            [-e [1] [-g] [-b] [-ld] [-ud] [-ct] [-et]]
            [-l]
            [-t]
            [-f  <Include_Filter>, ...]
            [-fx <Exclude_Filter>, ...]
            [-dc <Comment>]
            [-o]
            [-r [1..5] [-a]]
            [-at <Timeout>]
            [-wer]
            [-64]
            {
                {{[-w] <Process_Name> | <Service_Name> | <PID>} [<Dump_File> | <Dump_Folder>]}
            |
                {-x <Dump_Folder> <Image_File> [Argument, ...]}
            }

インストールの使用方法:

procdump.exe -i [Dump_Folder]
            [-mm] [-ma] [-mt] [-mp] [-mc <Mask>] [-md <Callback_DLL>] [-mk]
            [-r]
            [-at <Timeout>]
            [-k]
            [-wer]

アンインストールの使用方法:

procdump.exe -u

ダンプの種類:

ダンプの種類 説明
-mm 'Mini' ダンプ ファイルを書き込みます。 (既定値)。
- 直接および間接的に参照されるメモリ (スタックとそれらが参照するもの) が含まれます。
- すべてのメタデータ (プロセス、スレッド、モジュール、ハンドル、アドレス空間など) が含まれます。
-ma 'Full' ダンプ ファイルを書き込みます。
- すべてのメモリ (イメージ、マップ済み、プライベート) が含まれます。
- すべてのメタデータ (プロセス、スレッド、モジュール、ハンドル、アドレス空間など) が含まれます。
-mt 'Triage' ダンプ ファイルを書き込みます。
- 直接参照されるメモリ (スタック) が含まれます。
- 制限されたメタデータ (プロセス、スレッド、モジュール、ハンドル) が含まれます。
- 機密情報の削除は試行されますが、保証されません。
-mp 'MiniPlus' ダンプ ファイルを書き込みます。
- すべてのプライベート メモリとすべての読み取り/書き込みイメージ メモリまたはマップ済みメモリが含まれます。
- すべてのメタデータ (プロセス、スレッド、モジュール、ハンドル、アドレス空間など) が含まれます。
- サイズを最小限に抑えるために、512 MB を超える最大のプライベート メモリ領域は除外されます。
  メモリ領域は、同じサイズのメモリ割り当ての合計として定義されます。
  ダンプは Full ダンプと同じくらい詳細ですが、サイズは 10% から 75% です。
- 注: CLR プロセスは、デバッグの制限により、Full (-ma) としてダンプされます。
-mc 'Custom' ダンプ ファイルを書き込みます。
- 指定された MINIDUMP_TYPE マスク (16 進) によって定義されたメモリとメタデータが含まれます。
-md 'Callback' ダンプ ファイルを書き込みます。
- 指定された DLL の MiniDumpCallbackRoutine という名前の MiniDumpWriteDump コールバック ルーチンによって定義されたメモリが含まれます。
- すべてのメタデータ (プロセス、スレッド、モジュール、ハンドル、アドレス空間など) が含まれます。
-mk 'Kernel' ダンプ ファイルも書き込みます。
- プロセス内のスレッドのカーネル スタックが含まれます。
- 複製 (-r) を使用する場合、OS はカーネル ダンプ (-mk) をサポートしません。
- 複数のダンプ サイズを使用する場合は、ダンプ サイズごとに 1 つのカーネル ダンプが取得されます。

条件:

条件 説明
-a 停止を回避します。 -r が必要です。 同時ダンプ制限を超えたためにトリガーによってターゲットが長時間中断される場合、トリガーはスキップされます。
-at タイムアウト時の停止を回避します。 N 秒の時点でトリガーの収集を取り消します。
-b デバッグ ブレークポイントを例外として扱います (それ以外の場合は無視します)。
-c この CPU しきい値を上回ると、プロセスのダンプを作成します。
-cl この CPU しきい値を下回ると、プロセスのダンプを作成します。
-dc 生成されるダンプ コメントに、指定された文字列を追加します。
-e プロセスで未処理の例外が発生したときに、ダンプを書き込みます。
1 回目の例外時にダンプを作成するには、1 を含めます。
DLL (モジュール) が読み込まれるときにダンプを作成するには、-ld を追加します (フィルター処理が適用されます)。
DLL (モジュール) がアンロードされるときにダンプを作成するには、-ud を追加します (フィルター処理が適用されます)。
スレッドが作成されるときにダンプを作成するには、-ct を追加します。
スレッドが終了するときにダンプを作成するには、-et を追加します。
-f DLL の読み込み/アンロード時に例外、デバッグ ログ、ファイル名の内容をフィルター処理します (含めます)。 ワイルドカード (*) がサポートされています。
-fx DLL の読み込み/アンロード時に例外、デバッグ ログ、ファイル名の内容をフィルター処理します (除外します)。 ワイルドカード (*) がサポートされています。
-g マネージド プロセスでネイティブ デバッガーとして実行します (相互運用なし)。
-h ハングした (5 秒以上ウィンドウ メッセージに応答しない) ウィンドウがプロセスにある場合は、ダンプを書き込みます。
-k 複製 (-r) 後、またはダンプ収集の終了時に、プロセスを強制終了します。
-l プロセスのデバッグ ログを表示します。
-m このメモリ コミットしきい値 (MB 単位) に達すると、ダンプを作成します。
-ml メモリ コミットが、指定された MB 値を下回ると、トリガーされます。
-n 終了するまでに書き込むダンプの数。
-o 既存のダンプ ファイルを上書きします。
-p パフォーマンス カウンターが、指定されたしきい値に達するか、それを上回ると、トリガーされます。 カウンターやインスタンス名によっては、大文字と小文字が区別される場合があります。
-pl パフォーマンス カウンターが、指定されたしきい値を下回ると、トリガーされます。
-r 複製を使用してダンプします。 同時制限は省略可能です (既定値は 1、最大値は 5)。 複製 (-r) を使用する場合、OS はカーネル ダンプ (-mk) をサポートしません。 注意: 同時実行の値が大きい場合は、システムのパフォーマンスに影響を与える可能性があります。
- Windows 7: リフレクションを使用します。 OS は -e をサポートしません。
- Windows 8.0: リフレクションを使用します。 OS は -e をサポートしません。
- Windows 8.1 以降: PSS を使用します。 すべてのトリガーの種類がサポートされています。
-s ダンプが書き込まれるまでの連続する秒数 (既定値は 10)。
-t プロセスが終了するときにダンプを書き込みます。
-u 1 つのコアに関連する CPU 使用率を扱います (-c と共に使用されます)。
-v デバッグのみ: 詳細出力。
-w 指定されたプロセスが実行されていない場合は、起動するまで待機します。
-wer (最大の) ダンプを Windows エラー報告のキューに入れます。
-x 省略可能な引数を使用して、指定されたイメージを起動します。 ストア アプリケーションまたはストア パッケージである場合、ProcDump は、次のアクティブ化時に (のみ) 起動します。
-y 非表示: ストア アプリケーションのアクティブ化。
-64 既定では、ProcDump は、64 ビット Windows で実行されている場合、32 ビット プロセスの 32 ビット ダンプをキャプチャします。 このオプションは、64 ビット ダンプを作成するようにオーバーライドします。 WOW64 サブシステムのデバッグにのみ使用します。

使用許諾契約書:

-accepteula コマンド ライン オプションを使用して、Sysinternals 使用許諾契約書に自動的に同意します。

自動終了:

-cancel <Target Process PID>

このオプションを使用すること、または名前 ProcDump-<PID> を使用してイベントを設定することは、Ctrl+C キーを押して ProcDump を正常に終了することと同じです。 正常に終了すると、キャプチャがアクティブである場合にプロセスが再開されます。 取り消しは、プロセスを監視しているすべての ProcDump インスタンスに適用されます。

ファイル名:

既定のダンプ ファイル名: PROCESSNAME_YYMMDD_HHMMSS.dmp

次の代替名がサポートされています。

Substitution 説明
PROCESSNAME プロセス名
PID プロセス ID
EXCEPTIONCODE 例外コード
YYMMDD 年/月/日
HHMMSS 時間/分/秒

  • 'notepad' という名前のプロセスの Mini ダンプを書き込みます (一致するものは 1 つだけ存在できます)。

    C:\>procdump notepad
    
  • PID '4572' のプロセスの Full ダンプを書き込みます。

    C:\>procdump -ma 4572
    
  • 最初に PID '4572' のプロセスの Mini ダンプを書き込み、次に Full ダンプを書き込みます。

    C:\>procdump -mm -ma 4572
    
  • 'notepad' という名前のプロセスの 3 つの Mini ダンプを 5 秒間隔で書き込みます。

    C:\>procdump -n 3 -s 5 notepad
    
  • CPU 使用率が 5 秒間にわたって 20% を超えた場合に、'consume' という名前のプロセスの Mini ダンプを最大で 3 つ書き込みます。

    C:\>procdump -n 3 -s 5 -c 20 consume
    
  • そのウィンドウの 1 つが 5 秒以上にわたって応答しない場合に、'hang.exe' という名前のプロセスの Mini ダンプを書き込みます。

    C:\>procdump -h hang.exe
    
  • そのウィンドウの 1 つが 5 秒以上にわたって応答しない場合に、'hang.exe' という名前のプロセスの Full ダンプと Kernel ダンプを書き込みます。

    C:\>procdump -ma -mk -h hang.exe
    
  • システムの合計 CPU 使用率が 10 秒間にわたって 20% を超えた場合に、'outlook' という名前のプロセスの Mini ダンプを書き込みます。

    C:\>procdump outlook -s 10 -p "\Processor(_Total)\% Processor Time" 20
    
  • Outlook のハンドル数が 10,000 を超えた場合に、'outlook' という名前のプロセスの Full ダンプを書き込みます。

    C:\>procdump -ma outlook -p "\Process(Outlook)\Handle Count" 10000
    
  • ハンドル数が 10,000 を超えた場合に、'svchost' PID 1234、インスタンス #87 の Full ダンプを書き込みます。

    C:\>procdump -ma 1234 -p "\Process(svchost#87)\Handle Count" 10000
    

    注: 複数のインスタンス カウンター
    カウンターのインスタンスが複数ある場合は、名前またはインスタンス番号を含める必要があります。

    \Processor(NNN)\% Processor Time
    \Thermal Zone Information(<name>)\Temperature
    \Process(<name>[#NNN])\<counter>
    

    古い OS では、\Process カウンターの PID を追加する必要があります。

    \Process(<name>[_PID])\<counter>
    

    ヒント: カウンターを表示するには、パフォーマンス モニターを使用します (特に大文字と小文字の区別に関して)。
    ヒント:\Process(*) ベースのカウンターの場合は、PowerShell を使用して PID をその #NNN にマップします。

    Get-Counter -Counter "\Process(*)\ID Process"
    
  • 2 回目の例外の Full ダンプを書き込みます。

    C:\>procdump -ma -e w3wp.exe
    
  • 1 回目または 2 回目の例外の Full ダンプを書き込みます。

    C:\>procdump -ma -e 1 w3wp.exe
    
  • デバッグ文字列メッセージの Full ダンプを書き込みます。

    C:\>procdump -ma -l w3wp.exe
    
  • w3wp.exe の 1 回目または 2 回目の例外のそれぞれの Full ダンプを最大で 10 個書き込みます。

    C:\>procdump -ma -n 10 -e 1 w3wp.exe
    
  • 例外のコード/名前/メッセージに 'NotFound' が含まれている場合に、Full ダンプを最大で 10 個書き込みます。

    C:\>procdump -ma -n 10 -e 1 -f NotFound w3wp.exe
    
  • デバッグ文字列メッセージに 'NotFound' が含まれている場合に、Full ダンプを最大で 10 個書き込みます。

    C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
    
  • 'notepad' という名前のプロセスを待機します (さらに、例外があるかどうかを監視します)。

    C:\>procdump -e -w notepad
    
  • 'notepad' という名前のプロセスを起動します (さらに、例外があるかどうかを監視します)。

    C:\>procdump -e -x c:\dumps notepad
    
  • ストア "アプリケーション" の起動に登録し、そのアクティブ化を試みます。 アクティブ化されると、新しい ProcDump インスタンスが起動します。

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_8wekyb3d8bbwe!AppexMaps
    
  • ストア "パッケージ" の起動に登録します。 (手動で) アクティブ化されると、新しい ProcDump インスタンスが起動します。

    C:\>procdump -e -x c:\dumps Microsoft.BingMaps_1.2.0.136_x64__8wekyb3d8bbwe
    
  • 未処理の例外がある場合に、Microsoft Exchange Information Store の MiniPlus ダンプを書き込みます。

    C:\>procdump -mp -e store.exe
    
  • ダンプを書き込まずに、w3wp.exe の例外コード/名前を表示します。

    C:\>procdump -e 1 -f "" w3wp.exe
    
  • Windows 7/8.0: リフレクションを使用して、5 つの連続するトリガーに対する停止を減らします。

    C:\>procdump -r -ma -n 5 -s 15 wmplayer.exe
    
  • Windows 8.1 以降: PSS を使用して、5 つの同時トリガーに対する停止を減らします。

    C:\>procdump -r 5 -ma -n 5 -s 15 wmplayer.exe
    
  • (AeDebug) 事後デバッガーとして ProcDump をインストールします。

    C:\>procdump -ma -i c:\dumps
    

    ..または..

    C:\Dumps>procdump -ma -i
    
  • (AeDebug) 事後デバッガーとして ProcDump をアンインストールします。

    C:\>procdump -u
    

コマンド ラインの例の一覧を表示します (例は上記のとおりです)。

C:\>procdump -? -e
  • Windows 内部マニュアル Mark Russinovich と David Solomon の共著による Windows 内部解説書の決定版。更新情報や正誤表が掲載される公式ページです。
  • Windows Sysinternals 管理者リファレンス Mark Russinovich と Aaron Margosis の共著による、Sysinternals ユーティリティ公式ガイド。すべてのツールの説明、機能解説、トラブルシューティング時の使い方、実践的な使用状況の例が示されています。

DownloadProcDump のダウンロード(714 KB)

ProcDump for Linux のダウンロード (GitHub)

実行場所:

  • クライアント: Windows 8.1以降。
  • サーバー: Windows Server 2012 およびそれ以降。

詳細情報