使用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
Linux開啟產生coredump檔案
在linux上只要開啟core dump檔案開關,當程式crash時系統生成相應的core檔案。檢視當前是否已經開啟了此開關 輸入命令 ulimit c 如果輸出為 0 則代表沒有開啟 如果為unlimited則已經開啟。root localhost ulimit c 0開啟coredump 輸入命...
linux 下如何開啟core dump檔案開關
在linux下面就簡單的許多。只要開啟相應的開關,linux會自動在程式crash時生成相應的core檔案。這個檔案和window下的dump檔案類似。下面是簡單的一些步驟 1.檢視當前是否已經開啟了此開關 通過命令 ulimit c 如果輸出為 0 則代表沒有開啟。如果為unlimited則已經開...
linux 下如何開啟core dump檔案開關
在linux下面就簡單的許多。只要開啟相應的開關,linux會自動在程式crash時生成相應的core檔案。這個檔案和window下的dump檔案類似。下面是簡單的一些步驟 1.檢視當前是否已經開啟了此開關 通過命令 ulimit c 如果輸出為 0,則代表沒有開啟。如果為unlimited則已經開...