Linuxで制御不能になっているプロセスがあります。開発マシンに取得できるダンプファイルを作成し、そこで調べたいと思います。
Windowsでは、[プロセス]タブに移動して[ダンプファイルの作成]を右クリックすることで、ADVPlusやWindowsタスクマネージャーなど、いくつかの異なる方法で実行中のプログラムの「ミニダンプ」を作成できます。
Linuxでこれを達成する方法はありますか?
コールスタック、ヒープ、スタックメモリ(特にスタック)、例外、その他すべてが必要です。
ダンプファイルを作成する方法は次のとおりです。
gcore - Generate a core file for a running process
構文gcore [-oファイル名] pid
pmap <PID>
または
strace -f -o xxx -p <PID>
あなたが探しているツールかもしれません。
pmapは、提供されたプロセスのメモリ使用量に関する概要を示します。 straceは、プロセスが実行するすべてのアクションを追跡します。 -fを使用すると、straceに子プロセスの監視も考慮するように指示し、-o xxxを指定すると、straceに出力をファイルに書き込むよう指示します。 straceを使用して新しいプロセスを開始することもできます。と
strace cat /etc/passwd
開かれたファイルなど、特定の情報のみに関心がある場合は、それに応じてstraceを起動できます。
strace -f -o xxx -e trace=open -p <PID>
一方、 Sysinternals Suite のProcDumpも、非常に自由なMIT それぞれのGitHubページ)からのライセンス の下で利用できるようになりました。
Usage: procdump [OPTIONS...] TARGET
OPTIONS
-C CPU threshold at which to create a dump of the process from 0 to 100 * nCPU
-c CPU threshold below which to create a dump of the process from 0 to 100 * nCPU
-M Memory commit threshold in MB at which to create a dump
-m Trigger when memory commit drops below specified MB value.
-n Number of dumps to write before exiting
-s Consecutive seconds before dump is written (default is 10)
TARGET must be exactly one of these:
-p pid of the process
したがって、コマンドライン引数から推測できるので、後でgdb
などを使用して分析するために、不必要な量のリソースを取得することで、正常に動作しないことがわかっているプロセスの「スナップショット」を簡単に取得できます。
ただし、このLinux用のProcDumpは、Windowsのいとこと比較して機能が完全ではありません。