使用C/C++語(yǔ)言開(kāi)發(fā)程序時(shí),當(dāng)程序crash的時(shí)候產(chǎn)生core dump文件對(duì)于調(diào)試程序是很有幫助的。在Redhat Linux系統(tǒng)中默認(rèn)是不生成core dump文件的,這是因?yàn)樵?etc/profile文件中有這樣一行
ulimit -S -c 0 > /dev/null 2>&1
如何打開(kāi)core dump呢?最簡(jiǎn)單的方法是用戶(hù)在自己的~/.bash_profile中加入ulimit -S -c unlimited > /dev/null 2>&1,這樣設(shè)置后允許當(dāng)前用戶(hù)生成沒(méi)有大小限制的core dump文件。此外還有兩種系統(tǒng)級(jí)修改生成core dump的方法。
第一種方法是修改/etc/profile,把ulimit那一行改為
ulimit -S -c unlimited > /dev/null 2>&1
這樣設(shè)置后系統(tǒng)允許所有用戶(hù)生成沒(méi)有大小限制的core dump文件。這樣做的優(yōu)點(diǎn)是不需要重起系統(tǒng),缺點(diǎn)是無(wú)法控制只讓某些用戶(hù)生成core dump文件。
第二種方法是修改/etc/security/limits.conf文件。很多系統(tǒng)上限都可以通過(guò)修改這個(gè)文件改變,如最大子進(jìn)程個(gè)數(shù),最大打開(kāi)文件數(shù)等等。這個(gè)文件有詳細(xì)的注釋?zhuān)瑢?duì)如何修改這個(gè)文件做了說(shuō)明。如果想對(duì)所有用戶(hù)打開(kāi)core dump,可以加入一行
* soft core 0
如果只想對(duì)某些用戶(hù)或用戶(hù)組打開(kāi)core dump,可以加入
user soft core 0或@group soft core 0
注意如果通過(guò)修改/etc/security/limits.conf文件打開(kāi)core dump,還需要注釋掉/etc/profile中的ulmit那一行
#ulimit -S -c 0 > /dev/null 2>&1
這樣修改的優(yōu)點(diǎn)是可以針對(duì)特定用戶(hù)或特定組打開(kāi)core dump文件,缺點(diǎn)是需要重起系統(tǒng)。
最后說(shuō)一下生成core dump文件的位置,默認(rèn)位置與可執(zhí)行程序在同一目錄下,文件名是core.***,其中***是一個(gè)數(shù)字。core dump文件名的模式保存在/proc/sys/kernel/core_pattern中,缺省值是core。通過(guò)以下命令可以更改core dump文件的位置(如希望生成到/tmp/cores目錄下)
echo "/tmp/cores/core" > /proc/sys/kernel/core_pattern
聯(lián)系客服