列出所有資源的限制:ulimit -a
或者檢視core file size:ulimit -c
core file size:
unlimited:core檔案的大小不受限制
0:程式出錯時不會產生core檔案
1024:代表1024k,core檔案超出該大小就不能生成了
設定core檔案大小:ulimit -c filesize
注意:盡量將這個檔案大小設定得大一些,程式崩潰時生成core檔案大小即為程式執行時占用的記憶體大小。可能發生堆疊溢位的時候,占用更大的記憶體
預設生成路徑:輸入可執行檔案執行命令的同一路徑下
預設生成名字:預設命名為core。新的core檔案會覆蓋舊的core檔案
a.設定pid作為副檔名
1:新增pid作為副檔名,生成的core檔名稱為core.pid
0:不新增pid作為副檔名,生成的core檔名稱為core
修改 /proc/sys/kernel/core_uses_pid 檔案內容為: 1
修改檔案命令:echo 「1」 > /proc/sys/kernel/core_uses_pid
或者sysctl -w kernel.core_uses_pid=1 kernel.core_uses_pid = 1
b. 控制core檔案儲存位置和檔名格式
修改檔案:echo 「/corefile/core-%e-%p-%t」 > /proc/sys/kernel/core_pattern
或者:sysctl -w kernel.core_pattern=/corefile/core-%e-%p-%t kernel.core_pattern = /corefile/core-%e-%p-%t
可以將core檔案統一生成到/corefile目錄下,產生的檔名為core-命令名-pid-時間戳
以下是引數列表:
%p - insert pid into filename 新增pid(程序id)
%u - insert current uid into filename 新增當前uid(使用者id)
%g - insert current gid into filename 新增當前gid(使用者組id)
%s - insert signal that caused the coredump into the filename 新增導致產生core的訊號
%t - insert unix time that the coredump occurred into filename 新增core檔案生成時的unix時間
%e - insert coredumping executable name into filename 新增導致產生core的命令
kill -s sigse** $$
檢視/corefile目錄下是否生成了core檔案
test.c
#includeint main()
root@ubuntu:~# gcc -o test test.c
root@ubuntu:~# ./test
segmentation fault (core dumped)
bingo:這裡出現段錯誤並生成core檔案了
在/corefile目錄下發現core-test-31421-1476266571
開始除錯
根據堆疊資訊檢視bug
Linux生成core檔案 core檔案路徑設定
在linux下產生並除錯core檔案 先看看我用的是個什麼機器 uname a linux dev 2.4.21 9.30axsmp 1 smp wed may 26 23 37 09 edt 2004 i686 i686 i386 gnu linux 再看看預設的一些引數,注意core file ...
Linux生成core檔案 core檔案路徑設定
在linux下產生並除錯core檔案 先看看我用的是個什麼機器 uname a linux dev 2.4.21 9.30axsmp 1 smp wed may 26 23 37 09 edt 2004 i686 i686 i386 gnu linux 再看看預設的一些引數,注意core file ...
Linux生成core檔案 core檔案路徑設定
在linux下產生並除錯core檔案 先看看我用的是個什麼機器 uname a linux dev 2.4.21 9.30axsmp 1 smp wed may 26 23 37 09 edt 2004 i686 i686 i386 gnu linux 再看看預設的一些引數,注意core file ...