Skip to content

Latest commit

 

History

History
33 lines (28 loc) · 2.06 KB

coredump.org

File metadata and controls

33 lines (28 loc) · 2.06 KB

coredump

应用程序在运行过程中由于各种异常或者 bug 导致退出,在满足一定条件下会产生一个 core 文件。通常包含了程序运行时内存、寄存器状态、堆栈指针、内存管理信息以及函数调用堆栈信息。 通过工具分析这个文件,可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题点并解决。

配置

打开 core dump 功能
  • 在终端中输入命令 ulimit -c ,输出的结果为 0,说明默认是关闭 core dump 的,即当程序异常终止时,也不会生成 core dump 文件
  • 我们可以使用命令 ulimit -c unlimited 来开启 core dump 功能,并且不限制 core dump 文件的大小;如果需要限制文件的大小,将 unlimited 改成你想生成 core 文件最大的大小,注意单位为 blocks(KB)
  • 用上面命令只会对当前的终端环境有效,如果想需要永久生效,可以修改文件 /etc/security/limits.conf 文件,增加一行:
    # /etc/security/limits.conf
    #
    #Each line describes a limit for a user in the form:
    #
    #<domain>   <type>   <item>   <value>
        *          soft     core   unlimited
            
修改 core 文件保存的路径
  • 默认生成的 core 文件保存在可执行文件所在的目录下,文件名就为 core
  • 通过修改 /proc/sys/kernel/core_uses_pid 文件可以让生成 core 文件名是否自动加上 pid 号
  • 还可以通过修改 /proc/sys/kernel/core_pattern 来控制生成 core 文件保存的位置以及文件名格式

调试

可以使用命令 gdb program core 来查看 core 文件,其中 program 为可执行程序名,core 为生成的 core 文件名。

参考