centos core文件的生成

使用C/C++語言開發程序時,當程序crash的時候產生core dump文件對於調試程序是很有幫助的。在Redhat Linux系統中默認是不生成core dump文件的,這是因爲在/etc/profile文件中有這樣一行
ulimit -S -c 0 > /dev/null 2>&1

如何打開core dump呢?最簡單的方法是用戶在自己的~/.bash_profile中加入ulimit -S -c unlimited > /dev/null 2>&1,這樣設置後允許當前用戶生成沒有大小限制的core dump文件。此外還有兩種系統級修改生成core dump的方法。

第一種方法是修改/etc/profile,把ulimit那一行改爲
ulimit -S -c unlimited > /dev/null 2>&1
這樣設置後系統允許所有用戶生成沒有大小限制的core dump文件。這樣做的優點是不需要重起系統,缺點是無法控制只讓某些用戶生成core dump文件。

第二種方法是修改/etc/security/limits.conf文件。很多系統上限都可以通過修改這個文件改變,如最大子進程個數,最大打開文件數等等。這個文件有詳細的註釋,對如何修改這個文件做了說明。如果想對所有用戶打開core dump,可以加入一行
* soft core 0
如果只想對某些用戶或用戶組打開core dump,可以加入
user soft core 0或@group soft core 0
注意如果通過修改/etc/security/limits.conf文件打開core dump,還需要註釋掉/etc/profile中的ulmit那一行
#ulimit -S -c 0 > /dev/null 2>&1
這樣修改的優點是可以針對特定用戶或特定組打開core dump文件,缺點是需要重起系統。

最後說一下生成core dump文件的位置,默認位置與可執行程序在同一目錄下,文件名是core.***,其中***是一個數字。core dump文件名的模式保存在/proc/sys/kernel/core_pattern中,缺省值是core。通過以下命令可以更改core dump文件的位置(如希望生成到/tmp/cores目錄下)
echo "/tmp/cores/core" > /proc/sys/kernel/core_pattern
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章