標籤:
在程式不尋常退出時,核心會在當前工作目錄下產生一個core檔案(是一個記憶體映像,同時加上調試資訊)。使用gdb來查看core檔案,可以指示出導致程式出錯的代碼所在檔案和行數。
1.core檔案的產生開關和大小限制
1)使用ulimit -c命令可查看core檔案的產生開關。若結果為0,則表示關閉了此功能,不會產生core檔案。
2)使用ulimit -c filesize命令,可以限制core檔案的大小(filesize的單位為kbyte)。若ulimit -c unlimited,則表示core檔案的大小不受限制。如果產生的資訊超過此大小,將會被裁剪,最終產生一個不完整的core檔案。在調試此core文 件的時候,gdb會提示錯誤。
可以將ulimit -c unlimited寫入到.bashrc中。
2.core檔案的名稱和產生路徑
core檔案產生路徑:
輸入可執行檔運行命令的同一路徑下。
若系統產生的core檔案不帶其它任何副檔名稱,則全部命名為core。新的core檔案產生將覆蓋原來的core檔案。
1)/proc/sys/kernel/core_uses_pid可以控制core檔案的檔案名稱中是否添加pid作為擴充。檔案內容為1,表示添加pid作為副檔名,產生的core檔案格式為core.xxxx;為0則表示產生的core檔案同一命名為core。
可通過以下命令修改此檔案:
echo "1" > /proc/sys/kernel/core_uses_pid
2)proc/sys/kernel/core_pattern可以控制core檔案儲存位置和檔案名稱格式。
可通過以下命令修改此檔案:
echo "/corefile/core-%e-%p-%t" > core_pattern,可以將core檔案統一產生到/corefile目錄下,產生的檔案名稱為core-命令名-pid-時間戳記
以下是參數列表:
%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加當前uid
%g - insert current gid into filename 添加當前gid
%s - insert signal that caused the coredump into the filename 添加導致產生core的訊號
%t - insert UNIX time that the coredump occurred into filename 添加core檔案產生時的unix時間
%h - insert hostname where the coredump happened into filename 添加主機名稱
%e - insert coredumping executable name into filename 添加命令名
linux下core檔案設定(轉)