600000007

プログラムと折り紙のブログです。

macでデフォルトのcore出力設定を変える方法

環境

  • OS X 10.8.2 Mountain Lion

ulimit

coreはデフォルトでは出力サイズが0になっているので出力されません。
出るようにするにはulimitコマンドを使います。
まずは現状の確認。

$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 709
virtual memory          (kbytes, -v) unlimited

無制限に変更します。

$ ulimit -c unlimited
$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
max locked memory       (kbytes, -l) unlimited
max memory size         (kbytes, -m) unlimited
open files                      (-n) 256
pipe size            (512 bytes, -p) 1
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 709
virtual memory          (kbytes, -v) unlimited

これでcoreが出力されるようになります。

launchd.conf

ただし、ulimitの設定は再起動すると失われます。
デフォルト設定を変えるには、/etc/launchd.confを使うのが簡単です。

/etc/launchd.confに以下を記述します。デフォルトではlaunchd.confは存在しないので作成します。

limit core unlimited unlimited

launchd.confは、launchdの設定ファイルです。
launchctlのコマンドをそのまま記述できます。