linux下core file size設置筆記


轉自:https://www.cnblogs.com/kevingrace/p/8243938.html

1)core文件簡介

core文件其實就是內存的映像,當程序崩潰時,存儲內存的相應信息,主用用於對程序進行調試。當程序崩潰時便會產生core文件,其實准確的應該說是core dump 文件,默認生成位置與可執行程序位於同一目錄下,文件名為core.***,其中***是某一數字。

2)開啟或關閉core文件的生成

1.查看core文件生成是否打開

查看core文件生成功能是否打開,如下若是0,則表示沒有打開。
[root@steven ~] # ulimit -c
0

 2.臨時設置

臨時設置(如下設置2G,單位為kbyte)
如果生成的信息超過此大小,將會被裁剪,最終生成一個不完整的core文件。在調試此core文 件的時候,gdb會提示錯誤。
[root@steven ~] # ulimit -c 4194304

3.永久設置

[root@steven ~] # echo " * soft core 4194304" >> /etc/security/limits.conf
[root@steven ~] # echo " * hard core 4194304" >> /etc/security/limits.conf

4.查看

[root@steven ~] # ulimit -a
core file size          (blocks, -c) 4194304
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 61941
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 61941
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

 

若ulimit -c unlimited,則表示core文件的大小不受限制
[root@localhost ~]# ulimit -c unlimited

3)core文件的使用

在core文件所在目錄下鍵入:
[root@localhost ~]# gdb -c core   (-c指定core文件)
它會啟動GNU的調試器,來調試core文件,並且會顯示生成此core文件的程序名,中止此程序的信號等等
 
如果你已經知道是由什么程序生成此core文件的,比如MyServer崩潰了生成core.12345,那么用此指令調試:
[root@localhost ~]# gdb -c core MyServer

 4)產生core文件的測試

直接輸入指令:
[root@localhost ~]# kill -s SIGSEGV $$
 
擴展:
ulimint -a 用來顯示當前的各種用戶進程限制
 
Linux對於每個用戶,系統限制其最大進程數,為提高性能,可以根據設備資源情況,
設置個Linux用戶的最大進程數,一些需要設置為無限制:
數據段長度:ulimit -d unlimited
最大內存大小:ulimit -m unlimited
堆棧大小:ulimit -s unlimited

 

5)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文件保存位置和文件名格式。
可通過以下命令修改此文件,可以將core文件統一生成到/corefile目錄下,產生的文件名為core-命令名-pid-時間戳
# echo "/corefile/core-%e-%p-%t" > core_pattern
 
以下是參數列表:
    %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 添加命令名

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM