zoukankan      html  css  js  c++  java
  • Linux使用笔记: 定制core dump文件的文件名

    在开发过程中,当一个Linux程序异常退出时,我们可以通过core文件来分析它异常的详细原因。缺省情况下,Linux在程序异常时不产生core文件,要想让程序异常退出时产生core dump文件,需要使用ulimit命令更改coredump的设置:

    ulimit -c unlimited 

    上面的命令表示在程序异常时产生core dump文件,并且不对core dump文件的大小进行限制。

    上述设置只是使能了core dump功能,缺省情况下,内核在coredump时所产生的core文件放在与该程序相同的目录中,并且文件名固定为core。很显然,如果有多个程序产生core文件,或者同一个程序多次崩溃,就会重复覆盖同一个core文件。

    我们通过修改kernel的参数,可以指定内核所生成的coredump文件的文件名。例如,Easwy使用下面的命令使kernel生成名字为core.filename.pid格式的core dump文件:

    echo 'core.%e.%p' > /proc/sys/kernel/core_pattern 

    这样配置后,产生的core文件中将带有崩溃的程序名、以及它的进程ID。上面的%e和%p会被替换成程序文件名以及进程ID。

    可以在core_pattern模板中使用变量还很多,见下面的列表:

    • %% 单个%字符
    • %p 所dump进程的进程ID
    • %u 所dump进程的实际用户ID
    • %g 所dump进程的实际组ID
    • %s 导致本次core dump的信号
    • %t core dump的时间 (由1970年1月1日计起的秒数)
    • %h 主机名
    • %e 程序文件名

    如果在上述文件名中包含目录分隔符”/“,那么所生成的core文件将会被放到指定的目录中。

    需要说明的是,在内核中还有一个与coredump相关的设置,就是/proc/sys/kernel/core_uses_pid。如果这个文件的内容被配置成1,那么即使core_pattern中没有设置%p,最后生成的core dump文件名仍会加上进程ID。

    对所生成的core dump进程分析,需要使用调试工具,例如GDB等。可以参见Easwy的其它文章。

  • 相关阅读:
    平衡的括号(栈)
    二叉树遍历
    Ohana Cleans Up0101
    Missing number
    Django框架之模板层
    Django框架之路由层、视图层
    Django框架
    Django初识
    前端之bootstrap
    前端之BOM、DOM
  • 原文地址:https://www.cnblogs.com/zhoug2020/p/6038084.html
Copyright © 2011-2022 走看看