
ProcDump Sysinternals ツールの Linux バージョン
ProcDump は、Windows 用の Sysinternals ツールスイートに含まれるクラシックな ProcDump ツールを Linux および Mac 向けに再構築したものです。ProcDump は、パフォーマンストリガーに基づいてアプリケーションのコアダンプを作成する便利な方法を Linux および Mac の開発者に提供します。Linux および Mac 向けの ProcDump は Sysinternals の一部です。

gdb >= 7.6.1インストール手順はこちらをご覧ください。
ビルド手順はこちらをご覧ください。
互換性のない変更 ProcDump 1.3 のリリースにより、スイッチが Windows 版 ProcDump と統一されました。 Mac 版は現在、限られたトリガーしかサポートしていないことに注意してください。
Capture Usage:
procdump [-n Count]
[-s Seconds]
[-c|-cl CPU_Usage]
[-m|-ml Commit_Usage1[,Commit_Usage2...]]
[-gcm [<GCGeneration>: | LOH: | POH:]Memory_Usage1[,Memory_Usage2...]]
[-gcgen Generation]
[-restrack [nodump]]
[-sr Sample_Rate]
[-tc Thread_Threshold]
[-fc FileDescriptor_Threshold]
[-sig Signal_Number1[,Signal_Number2...]]
[-e]
[-f Include_Filter,...]
[-fx Exclude_Filter]
[-mc Custom_Dump_Mask]
[-pf Polling_Frequency]
[-o]
[-log syslog|stdout]
{
{{[-w] Process_Name | [-pgid] PID} [Dump_File | Dump_Folder]}
}
Options:
-n Number of dumps to write before exiting.
-s Consecutive seconds before dump is written (default is 10).
-c CPU threshold above which to create a dump of the process.
-cl CPU threshold below which to create a dump of the process.
-m Memory commit threshold(s) (MB) above which to create dumps.
-ml Memory commit threshold(s) (MB) below which to create dumps.
-gcm [.NET] GC memory threshold(s) (MB) above which to create dumps for the specified generation or heap (default is total .NET memory usage).
-gcgen [.NET] Create dump when the garbage collection of the specified generation starts and finishes.
-restrack Enable memory leak tracking (malloc family of APIs). If used without other triggers, use 't' to manually capture a restrack report. When used with other triggers, the 'nodump' option can be used to prevent dump generation and only produce restrack report(s).
-sr Sample rate when using -restrack.
-tc Thread count threshold above which to create a dump of the process.
-fc File descriptor count threshold above which to create a dump of the process.
-sig Comma separated list of signal number(s) during which any signal results in a dump of the process.
-e [.NET] Create dump when the process encounters an exception.
-f Filter (include) on the content of .NET exceptions (comma separated). Wildcards (*) are supported.
-fx Filter (exclude) on the content of -restrack call stacks. Wildcards (*) are supported.
-mc Custom core dump mask (in hex) indicating what memory should be included in the core dump. Please see 'man core' (/proc/[pid]/coredump_filter) for available options.
-pf Polling frequency.
-o Overwrite existing dump file.
-log Writes extended ProcDump tracing to the specified output stream (syslog or stdout).
-w Wait for the specified process to launch if it's not running.
-pgid Process ID specified refers to a process group ID.
-restrack スイッチはリソース追跡を有効にし、コアダンプ生成時点で解放されていないリソース割り当てを監視・報告します。結果は '.restrack' 拡張子のファイルに保存されます。現在、以下のリソース割り当て/解放関数が追跡されます。
割り当て:
解放:
Mac 版は現在リソース追跡を実装していません。
以下の例はすべて、pid == 1234 のプロセスを対象としています。
次のコマンドは、すぐにコアダンプを作成します。
sudo procdump 1234
次のコマンドは、10 秒間隔で 3 つのコアダンプを作成します。
sudo procdump -n 3 1234
次のコマンドは、5 秒間隔で 3 つのコアダンプを作成します。
sudo procdump -n 3 -s 5 1234
次のコマンドは、CPU 使用率が 65% 以上のたびにコアダンプを作成します(最大 3 回、各ダンプの間隔は少なくとも 10 秒)。
sudo procdump -c 65 -n 3 1234
次のコマンドは、CPU 使用率が 65% 以上のたびにコアダンプを作成します(最大 3 回、各ダンプの間隔は少なくとも 5 秒)。
sudo procdump -c 65 -n 3 -s 5 1234
次のコマンドは、CPU 使用率が範囲 [10,65] 外の場合にコアダンプを作成します。
sudo procdump -cl 10 -c 65 1234
次のコマンドは、CPU 使用率が 65% 以上、またはメモリ使用量が 100 MB 以上の場合にコアダンプを作成します。
sudo procdump -c 65 -m 100 1234
次のコマンドは、メモリ使用量が 100 MB 以上になったときにコアダンプを作成し、その後 200 MB 以上になったときにもう一度ダンプを作成します。
sudo procdump -m 100,200 1234
次のコマンドは、ユーザーが 't' を押すたびにメモリリークレポートを生成します(ダンプは作成されません)。
sudo procdump -restrack 1234
次のコマンドは、5 秒間隔で 3 つのメモリリークレポートを生成します(ダンプは作成されません)。
sudo procdump -n 3 -s 5 -restrack nodump 1234
次のコマンドは、メモリ使用量が 100 MB 以上の場合にコアダンプとメモリリークレポートを作成します。
sudo procdump -m 100 -restrack 1234
次のコマンドは、メモリ使用量が 100 MB 以上の場合にメモリリークレポートを生成します(ダンプは作成されません)。
sudo procdump -m 100 -restrack nodump 1234
次のコマンドは、10 回のメモリ割り当てごとに 1 回のサンプリングで、メモリ使用量が 100 MB 以上の場合にコアダンプとメモリリークレポートを作成します。
sudo procdump -m 100 -restrack -sr 10 1234
次のコマンドは、メモリ使用量が 100 MB 以上の場合にコアダンプとメモリリークレポートを作成し、文字列 "cache" を含むフレームがあるコールスタックを除外します。
sudo procdump -m 100 -restrack -fx *cache* 1234
次のコマンドは、.NET の合計メモリ使用量が 100 MB 以上になったときにコアダンプを作成し、その後 200 MB 以上になったときにもう一度ダンプを作成します。
sudo procdump -gcm 100,200 1234
次のコマンドは、ジェネレーション 1 の .NET メモリ使用量が 1 MB 以上になったときにコアダンプを作成し、その後 2 MB 以上になったときにもう一度ダンプを作成します。
sudo procdump -gcm 1:1,2 1234
次のコマンドは、.NET Large Object Heap のメモリ使用量が 100 MB 以上になったときにコアダンプを作成し、その後 200 MB 以上になったときにもう一度ダンプを作成します。
sudo procdump -gcm LOH:100,200 1234
次のコマンドは、.NET のジェネレーション 1 のガベージコレクションの開始時と終了時にコアダンプを作成します。
sudo procdump -gcgen 1
次のコマンドは、/tmp ディレクトリにすぐにコアダンプを作成します。
sudo procdump 1234 /tmp
次のコマンドは、現在のディレクトリに dump_0.1234 という名前でコアダンプを作成します。-n を使用すると、ファイル名は dump_0.1234、dump_1.1234 のようになります。
sudo procdump 1234 dump
次のコマンドは、SIGSEGV が発生したときにコアダンプを作成します。
sudo procdump -sig 11 1234
次のコマンドは、SIGSEGV が発生したときに、匿名のプライベートマッピングのみを含むコアダンプを作成します。
sudo procdump -mc 1 -sig 11 1234
次のコマンドは、対象の .NET アプリケーションが System.InvalidOperationException をスローしたときにコアダンプを作成します。
sudo procdump -e -f System.InvalidOperationException 1234
include フィルターは部分一致およびワイルドカード一致をサポートしているため、次のコマンドでも System.InvalidOperationException に対してコアダンプが作成されます。
sudo procdump -e -f InvalidOperation 1234
または
sudo procdump -e -f "*Invali*Operation*" 1234
すべてのオプションは、
-wと組み合わせて使用することもでき、指定した名前のプロセスが起動するのを待機します。
次のコマンドは、my_application という名前のプロセスを待機し、見つかったらすぐにコアダンプを作成します。
sudo procdump -w my_application
問題の修正やコードベースへの直接的なコントリビューションにご興味がある場合は、コントリビューション方法 のドキュメントをご覧ください。このドキュメントでは以下の内容をカバーしています。
行動規範 もあわせてご確認ください。
Copyright (c) Microsoft Corporation. All rights reserved.
MITライセンスの下で提供されています。
Linux 向け ProcDump: