Linux環境下如何生成core文件

Linux環境下進程發生異常而掛掉,通常很難查找原因,但是一般Linux內核給我們提供的核心文件,記錄了進程在崩潰時候的信息。但是生成core文件需要設置開關,具體步驟如下:

1、查看生成core文件的開關是否開啓,輸入命令# ulimit -a
在這裏插入圖片描述

我們看到,第一行core文件大小爲0,沒有開啓。

2、使用#ulimit -c [kbytes]可以設置系統允許生成的core文件大小;

ulimit -c 0 不產生core文件

ulimit -c 100 設置core文件最大爲100k

ulimit -c unlimited 不限制core文件大小
  執行命令# ulimit -c unlimited,然後ulimit -a查看core
在這裏插入圖片描述
  這樣進程崩潰就可以生成core文件了,這種方法只能在shell中生效,下面說一下永久生效的方法:

#vim /etc/profile,然後進入編輯模式,在profile文件中加入
ulimit -c unlimited
在這裏插入圖片描述
  保存退出,重啓服務器,改文件就長久生效,或者#source /etc/profile,不重啓服務器,使用source使文件馬上生效。

3.指定生成文件的路徑和名字;執行# vim /etc/sysctl.conf,進入編輯模式,加入下面兩行

kernel.core_pattern=/tmp/corefile/core_%e_%p
kernel.core_uses_pid=0
在這裏插入圖片描述
  在var下創建core目錄,用# sysctl –p /etc/sysctl.conf,是修改馬上生效。

core_pattern的命名參數如下:

%c 轉儲文件的大小上限

%e 所dump的文件名

%g 所dump的進程的實際組ID

%h 主機名

%p 所dump的進程PID

%s 導致本次coredump的信號

%t 轉儲時刻(由1970年1月1日起計的秒數)

%u 所dump進程的實際用戶ID

4、# kill -s SIGSEGV $$ ,執行命令,可以看到/tmp/corefile下生成了一個core文件,說明已經設置成功。
在這裏插入圖片描述
  現在可以對進程出問題用gdb對core文件調試了,分析問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章