-
系統打開core dump功能
- 在終端中輸入命令
ulimit -c
,輸出的結果為 0,說明默認是關閉 core dump 的,即當程序異常終止時,也不會生成 core dump 文件; - 使用命令
ulimit -c unlimited
來開啟 core dump 功能,並且不限制 core dump 文件的大小; 如果需要限制文件的大小,將 unlimited 改成你想生成 core 文件最大的大小,注意單位為 blocks(KB); - 以上命令只會對當前的終端環境有效,如果想需要永久生效,方法如下:
- 通過修改/etc/profile文件(系統的每個用戶設置環境信息)來使系統每次自動打開,打開/etc/profile文件 一般都可以在文件中找到這句語句:ulimit -S -c 0 > /dev/null2>&1,我們只要把那個0 改為unlimited ,然后保存退出,通過source /etc/profile 使當期設置生效;
- 修改文件
/etc/security/limits.conf
文件,增加一行:
#<domain> <type> <item> <value> * soft core unlimited
-
系統修改core文件生成位置
- 默認生成的 core 文件保存在可執行文件所在的目錄下,文件名為
core;
- 通過修改
/proc/sys/kernel/core_uses_pid
文件可以讓生成 core 文件名是否自動加上 pid 號;
例如echo 1 > /proc/sys/kernel/core_uses_pid
,生成的 core 文件名將會變成core.pid
,其中 pid 表示該進程的 PID ; - 通過修改
/proc/sys/kernel/core_pattern
來控制生成 core 文件保存的位置以及文件名格式;
例如可以用echo "/tmp/corefile-%e-%p-%t" > /proc/sys/kernel/core_pattern
設置生成的 core 文件保存在 “/tmp/corefile” 目錄下,文件名格式為 “corefile-程序名-pid-時間戳” ;