Linux生成core檔案 core檔案路徑設定

2021-10-03 23:48:38 字數 2130 閱讀 6201

列出所有資源的限制: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 ...