コアダンプがありません

コアダンプがありません

競合が発生して印刷されるアプリがあります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位置設定が正しいことを確認できます。

関連情報