ProcDump v11.0

作成者: Mark Russinovich、Andrew Richards

公開日: 2022 年 11 月 3 日

ダウンロードProcDump(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

ダンプの種類:

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

条件:

条件 説明
-a 停止を避けます。 -rを必要とします。 同時ダンプの上限を超えたためにトリガーによってターゲットが長時間中断される場合、トリガーはスキップされます。
-で タイムアウト時の停止を回避します。 トリガーのコレクションを数秒で N 取り消します。
-b デバッグ ブレークポイントを例外として扱います (それ以外の場合は無視します)。
-c プロセスのダンプを作成する CPU しきい値を超えています。
-Cl プロセスのダンプを作成する CPU しきい値を下回ります。
-Dc 生成されたダンプ コメントに指定した文字列を追加します。
-e プロセスで未処理の例外が発生したときにダンプを書き込みます。
初回例外時にダンプを作成するには、 1 を含めます。
を追加 -ld して、DLL (モジュール) が読み込まれるときにダンプを作成します (フィルター処理が適用されます)。
を追加 -ud して、DLL (モジュール) がアンロードされたときにダンプを作成します (フィルター処理が適用されます)。
を追加 -ct して、スレッドの作成時にダンプを作成します。
を追加 -et して、スレッドが終了したときにダンプを作成します。
-f DLL の読み込み/アンロード時に例外、デバッグ ログ、ファイル名の内容をフィルター処理 (含める) します。 ワイルドカード (*) がサポートされています。
-Fx DLL の読み込み/アンロード時に、例外、デバッグ ログ、ファイル名の内容をフィルター処理 (除外) します。 ワイルドカード (*) がサポートされています。
-g マネージド プロセスでネイティブ デバッガーとして実行します (相互運用なし)。
-h プロセスにハングしたウィンドウがある場合 (5 秒以上ウィンドウ メッセージに応答しない) 場合は、ダンプを書き込みます。
-k 複製 (-r)、またはダンプ収集の終了時にプロセスを強制終了します。
-l プロセスのデバッグ ログを表示します。
-m ダンプを作成するメモリ コミットのしきい値 (MB)。
-Ml メモリ コミットが指定された MB 値を下回るとトリガーされます。
-n 終了する前に書き込むダンプの数。
-o 既存のダンプ ファイルを上書きします。
-p パフォーマンス カウンターが、指定されたしきい値を超えたときにトリガーされます。 カウンターやインスタンス名によっては、大文字と小文字が区別される場合があります。
-Pl パフォーマンス カウンターが指定されたしきい値を下回ったときにトリガーされます。
-r クローンを使用してダンプします。 同時制限は省略可能です (既定値は 1、最大 5)。 クローン () を使用する場合、OS ではカーネル ダンプ (-mk-r) はサポートされません。 注意: コンカレンシー値が高い場合は、システムのパフォーマンスに影響を与える可能性があります。
- 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 インスタンスに適用されます。

Filename:

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

次の置換がサポートされています。

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

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

    C:\>procdump notepad
    
  • PID '4572' を使用してプロセスの完全ダンプを書き込みます。

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

    C:\>procdump -mm -ma 4572
    
  • "メモ帳" という名前のプロセスから 5 秒離れた 3 つのミニ ダンプを書き込みます。

    C:\>procdump -n 3 -s 5 notepad
    
  • 5 秒間 CPU 使用率が 20% を超えると、"consume" という名前のプロセスのミニ ダンプを最大 3 つ書き込みます。

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

    C:\>procdump -h hang.exe
    
  • "hang.exe" という名前のプロセスのフル ダンプとカーネル ダンプを、そのウィンドウの 1 つが 5 秒以上応答しない場合に書き込みます。

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

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

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

    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 では、カウンターの PID を追加する \Process 必要があります。

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

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

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

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

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

    C:\>procdump -ma -l w3wp.exe
    
  • w3wp.exeの 1 回目または 2 回目の例外ごとに最大 10 個のフル ダンプを書き込みます。

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

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

    C:\>procdump -ma -n 10 -l -f NotFound w3wp.exe
    
  • "メモ帳" というプロセスを待ちます (例外がないか監視します)。

    C:\>procdump -e -w notepad
    
  • "メモ帳" という名前のプロセスを起動します (例外がないか監視します)。

    C:\>procdump -e -x c:\dumps notepad
    
  • ストア 'application' の起動に登録し、アクティブ化を試みます。 アクティブ化されると、新しい 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 インフォメーション ストアの 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 Internals Book マーク・ルシノヴィッチとデイヴィッド・ソロモンによる、Windows内部の決定的な本の公式アップデートとエラッタページ。
  • Windows Sysinternals 管理者リファレンス Mark Russinovich と Aaron Margosis による Sysinternals ユーティリティの公式ガイドには、すべてのツールの説明、それらの機能、トラブルシューティングに使用する方法、実際の使用例が含まれます。

ダウンロードProcDump(714 KB)

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

次の場合に実行されます。

  • クライアント: Windows 8.1以降。
  • サーバー: Windows Server 2012以降。

詳細