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=/var/core/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 $$ ,執行命令,可以看到/var/core下生成了一個core文件,說明已經設置成功。

 

  好了,接下來進程出問題就可以用core文件調試了。

 

 

  


免責聲明!

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



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