打开应用程序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

 

你可能感兴趣的:(分析调试)