競合が発生して印刷されるアプリがありますAborted (core dumped)
。
バイナリを含むディレクトリを見てみると、クラッシュダンプはありません。
- ディレクトリはありません
core
。 - ファイルシステムに空き容量があります
- ユーザーはディレクトリにファイルを作成できます。
ulimit -a
印刷
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31845
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65536
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31845
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
cat /proc/sys/kernel/core_pattern
印刷
core
cat /proc/sys/fs/suid_dumpable
印刷
2
他に確認できるものはありますか?アイデアが足りません。
Ubuntu 15.04で実行中です。
答え1
一部のオペレーティングシステムでは、コアファイルを配置するようにシステム全体のディレクトリを設定できます。
プログラムが作業ディレクトリを変更した可能性があります。コアファイルは、コアをダンプしたプログラムの作業ディレクトリにあります。
ulimit -c 0が実行されている場合は、オペレーティングシステムのエラーがない限り、シェルメッセージに "core dumped"を印刷しないでください。
答え2
Linuxでコアダンプを生成するには、実行可能ファイルを実行するinitスクリプトに次のパラメータを追加できます。これにより、ソフトウェアを初期化したり、アプリケーションを実行したり環境変数をエクスポートしたりするたびに、次の行をスクリプトにコピーし、競合が発生した場合に備えてコアをダンプできます。
コアダンプの場所を設定するには、proc ファイルシステムを使用してコアファイルパスを設定できます。
/tmp/crash/corefiles
これにより、スクリプトを使用して実行されるプロセスのコアファイルビルドパスがそのまま残ります。
mkdir -p /tmp/crash/corefiles
chmod 775 /tmp/crash/corefiles
echo "/tmp/crash/corefiles/%e.%s.core" > /proc/sys/kernel/core_pattern
ここで変数は次のとおりです。
%金利ファイル名です
%Gプロセスが実行されているときの gid です。
%血プロセスのpidです
%Sダンプを引き起こす信号です。
%ティーダンプが発生する時間です。
%実行中のプロセスの uid。
また、コアファイルのサイズを設定する必要があります。次のコマンドは、コアファイルサイズを無制限に設定します。
ulimit -c unlimited
プロセスの各スレッドで設定されたコアファイルのサイズを確認するには、次のものを使用できます。
cat /proc/<PID>/limits
上記のコマンドの出力:
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 8388608 unlimited bytes
Max core file size unlimited unlimited bytes
Max open files 10000 10000 files
Max address space unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 31868 31868 processes
Max locked memory 65536 65536 bytes
Max file locks unlimited unlimited locks
Max pending signals 31868 31868 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
上記の出力で、最大コアファイルサイズが無制限に設定されていることがわかります。
あなたの場合は、以下の手順に従ってください。
- 上記のコアファイルの作成に関連するすべての環境のエクスポートと変更を含むinitスクリプトを作成します。
- initスクリプトでアプリケーションを起動します。
- 競合が発生した場合は、設定したコアファイルの場所に基づいてコアファイルを表示できるはずです。
- 次のコマンドを使用してcore_patternを確認し、
cat /proc/sys/kernel/core_pattern
位置設定が正しいことを確認できます。