打開應用程序coredump

1.系統環境:

    centos 7.2

2. 開啓應用程序coredump:

  •      第一種方法,直接改配置文件,重啓系統後仍然生效

  #vim /etc/security/limits.conf                                     

          *          soft     core  unlimited

  •     第二種方法,把修改core file限制的命令加到啓動配置文件裏

         #echo "ulimit -c unlimited" > /etc/profile              

  •     第三種方法,使用資源限制命令,修改core 文件大小爲unlimited,它其實改的是shell的進程的資源限制,需要重啓目標進程,而且重啓後失效

         #ulimit -c unlimited                         

3. 修改coredump文件的保存路徑

     需要提前創建corefiles目錄,否則找不到這個目錄,就無法生成coredump文件

     #mkdir  /tmp/corefiles               

     只是在內存生效,重啓系統失效       

     #echo "/tmp/corefiles/corefile-%e-%p-%t" > /proc/sys/kernel/core_pattern     

    找到kernel.core_uses_pid所在配置文件,  在其中加入這一行,”kernel.core_pattern = /tmp/corefiles/core.%e.%p.%t “   ,可以永久生效  

     #sysctl --system                                

      core_pattern內核參數,是用來指定一個core dump文件的名字模板,名字的最大長度128字節,默認名字是core,可以加入以下%開頭的模式字串:

        %%      用來輸出一個 '%'符號

        %p      正在生成core dump的進程pid

        %P      global pid (init PID namespace)

        %i      在多線程環境中,發生異常的線程tid

        %I      global tid (init PID namespace)

        %u      正在生成core dump的進程uid

        %g      正在生成core dump的進程gid

        %s      觸發進程生成core dump的信號量

        %t     core dump發生時,把當時的時間作爲文件名的一部分

        %h      core dump發生時,把所在主機的主機名作爲文件名的一部分

        %e      可執行文件的文件名

        %E      文件路徑

另外,可以使用管道模式,如kernel.core_pattern ="|/xx/xx/xx",把core dump數據輸出到另一個程序

重啓系統後,可以檢查是否生效

     #sysctl kernel.core_pattern                                          

4.通過強殺一個進程產生一個coredump文件

     #kill -s SIGSEGV pid

 

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