再起動時にデフォルトでコアダンプの生成を有効にしたい。
実行中:
ulimit -c unlimited
端末でコンピュータが再起動されるまで動作するようです。
うまくいくものを見つけたと思います。
LaunchControl というプログラムを使用して、enable core dumps.plist
に/System/Library/LaunchDaemons
というファイルを作成し、次の内容を含めました。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.Apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>GroupName</key>
<string>wheel</string>
<key>InitGroups</key>
<true/>
<key>Label</key>
<string>core dumps launchctl</string>
<key>ProgramArguments</key>
<array>
<string>launchctl</string>
<string>limit</string>
<string>core</string>
<string>unlimited</string>
<string>unlimited</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>UserName</key>
<string>root</string>
</dict>
</plist>
これらの権限を持つ:
$ ls -al enable\ core\ dumps.plist
-rw-r--r-- 1 root wheel 582 Dec 30 15:38 enable core dumps.plist
そしてこれはトリックをするように見えました:
$ launchctl limit core
core unlimited unlimited
$ ulimit -a core
core file size (blocks, -c) unlimited
...
<output snipped>
...
クラッシュするだけの小さなテストプログラムを作成しました。
$ ./a.out
Segmentation fault: 11 (core dumped)
そして、ほら、コアダンプが生成されました:
$ # ls -al /cores/
total 895856
drwxrwxr-t@ 3 root admin 102 Dec 30 15:55 .
drwxr-xr-x 31 root wheel 1122 Oct 18 10:32 ..
-r-------- 1 root admin 458678272 Dec 30 15:55 core.426
永続的なシェル制限を適用するには、それぞれのスタートアップシェルファイルにulimit
コマンドを追加する必要があります。
個々のユーザーの場合、次を使用します:~/.bashrc
または~/.bash_profile
ファイル。
すべてのユーザーに対して、次を使用します:/etc/bashrc
ファイル。
追加する推奨行:
# Changes the ulimit limits.
ulimit -Sn 4096 # Increase open files.
ulimit -Sl unlimited # Increase max locked memory.
launchctl
を介してシステムリソースの制限を変更するには、次を参照してください。 macOSでulimit設定を保持する方法