linux下core文件设置与查看
发布日期:2021-05-08 05:55:21 浏览次数:19 分类:精选文章

本文共 1191 字,大约阅读时间需要 3 分钟。

如何处理程序崩溃并生成core文件

在Linux系统中,当程序异常退出时,内核会生成core文件(core dump),这些文件包含程序的内存映像和调试信息,是调试崩溃程序的重要依据。本文将介绍如何查看和控制core文件的生成,以及如何通过gdb分析core文件。

一、查看系统中core文件生成的开关是否打开

  • 使用ulimit命令查看core文件的生成开关

    ulimit -c

    若输出为0,说明core文件生成功能关闭,程序崩溃时不会生成core文件。

  • 二、设置core文件生成

  • 设置core文件大小限制

    使用ulimit命令设置core文件的大小限制:

    ulimit -c unlimited

    若设置为指定大小:

    ulimit -c 100M

    生成的core文件大小将不超过指定值,超过部分将被裁剪,可能导致无法完全分析。

  • 在用户环境中生效设置

    为避免影响其他用户,建议在/root/.bash_profile中设置:

    ulimit -S -c unlimited

    然后执行:

    source /root/.bash_profile

    这样仅对当前用户生效。

  • 三、core文件的设置

  • core文件的命名规则

    core文件的默认保存位置在程序所在目录下,文件名格式为core-<进程号>-<时间戳>。可通过修改/proc/sys/kernel/core_pattern来定制文件名格式:

    echo "/corefile/core-%e-%p-%t" > /proc/sys/kernel/core_pattern

    说明:

    • %e:插入核心dump时运行的可执行文件名
    • %p:插入进程ID
    • %u:插入当前用户ID
    • %g:插入当前组ID
    • %s:插入导致coredump的信号
    • %t:插入coredump发生的Unix时间戳
    • %h:插入coredump发生时的主机名
  • core文件的保存位置

    通过修改/proc/sys/kernel/core_pattern可指定core文件的保存目录:

    echo "/tmp/cores/core" > /proc/sys/kernel/core_pattern
  • 四、core文件的查看

  • 使用gdb分析core文件

    安装gdb后,可通过以下命令查看core文件:

    gdb -c core.xxxx

    或者:

    gdb file ./a.out core.xxxx

    使用bt命令查看程序崩溃时的堆栈信息:

    bt

    或frame命令逐步分析堆栈:

    frame
  • 注意事项

    • 在编译程序时,需加入-g选项以支持生成core文件。
    • 对于多线程程序,core文件的分析可能较为复杂,需结合具体错误信息逐步排查。
    • 常见错误包括内存越界、竞态条件等,需结合core文件中的信息和程序代码进行分析。
  • 通过以上方法,可以有效地查看和控制core文件的生成,帮助快速定位程序崩溃的原因。

    上一篇:编码格式简介(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
    下一篇:mysql配置安装:

    发表评论

    最新留言

    路过按个爪印,很不错,赞一个!
    [***.219.124.196]2025年03月25日 15时26分15秒