CORE(5)

名称
core - メモリイメージのファイルフォーマット

書式
<sys/param.h>

解説
プロセスを異常終了させるシグナルのうちのいくつかは、 プロセスのメモリ内状態の記録をディスクに書き出させる効果もあります。 これにより、利用可能なデバッガのどれかを使用して後で検査を行うことが 可能です (sigaction(2) を参照してください)。 このメモリイメージは、デフォルトでは作業ディレクトリの プログラム名.core という名前のファイルに書かれます。 ただし、終了したプロセスがそのディレクトリに書きこみ権限を持ち、 発生した異常がシステムを破壊しないことが前提です。 (システムが破壊された場合には、 コアファイルを保存するかどうかの決定は不定です。 savecore(8) を参照してください。)

コアファイルの最大サイズは setrlimit(2) により制限されます。 制限よりもサイズの大きなファイルは生成されません。

コアファイル名は sysctl(8) 変数 kern.corefile にて制御されます。 この変数の内容がコアイメージを格納するファイルの名前を示します。 このファイル名は絶対パスでも相対パスでもかまいません (後者の場合、コアイメージを生成するプログラムの現在のディレクトリ から解決されます)。 このファイル名テンプレート中にあるシーケンス %N はいずれもプロセス名で置き換えられ、 %P はプロセスの PID で置き換えられ、 %U は UID で置き換えられます。 デフォルトの名前は %N.core であり、伝統的な FreeBSD の振舞いとなります。

デフォルトでは、実ユーザまたは実効ユーザ、あるいは実グループ または実行グループが変更されているプロセスはコアファイルを 生成しません。 この動作は sysctl(8) で kern.sugid_coredump を 1 にすることによりコアダンプを生成するように変更できます。

使用例
全コアイメージを、 /var/coredumps 以下のユーザごとのプライベート領域に格納するためには、 次のように sysctl(8) コマンドを使用します:

    sysctl kern.corefile="/var/coredumps/%U/%N.core"

関連項目
gdb(1), kgdb(1), setrlimit(2), sigaction(2), sysctl(8)

歴史
core ファイルのフォーマットは AT&T UNIX に登場しました。