美文网首页
linux core dump

linux core dump

作者: zs0zrc | 来源:发表于2018-03-19 21:30 被阅读89次

core dump:(内存快照)在linux中当程序发生异常中止或者崩溃时,操作系统会将程序当时的内存状况记录下来,存放到一个文件中,这中行为就叫core dump.core dump不仅保存了程序当时的内存状况,还有关键的程序运行的状态 ,寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。

core dump产生的时机:

Linux 中信号是一种异步事件处理的机制,每种信号对应有其默认的操作。默认操作主要包括忽略该信号(Ingore)、暂停进程(Stop)、终止进程(Terminate)、终止并发生core dump(core)等。如果我们信号均是采用默认操作,那么,以下列出几种信号,它们在发生时会产生 core dump:

当然不仅限于上面的几种信号。这就是为什么我们使用 Ctrl+z 来挂起一个进程或者 Ctrl+C 结束一个进程均不会产生 core dump,因为前者会向进程发出 SIGTSTP 信号,该信号的默认操作为暂停进程(Stop Process);后者会向进程发出SIGINT 信号,该信号默认操作为终止进程(Terminate Process)。同样上面提到的 kill -9 命令会发出 SIGKILL 命令,该命令默认为终止进程。而如果我们使用 Ctrl+\ 来终止一个进程,会向进程发出 SIGQUIT 信号,默认是会产生 core dump 的。还有其它情景会产生 core dump, 如:程序调用 abort() 函数、访存错误、非法指令等等

怎么查看是否开启core dump: ulimit -c 返回0 代表没开启 返回unlimited代表开启了

怎么打开core dump:

一种方法是:ulimit -c unlimited

但是这种方法是暂时的,你每打开一次终端都要输一次

另一种方法是:修改/etc/bash.bashrc文件 ,向里面加入一句话

ulimit -c unlimited

然后执行 source /etc/bash.bashrc  就行了

修改 core 文件保存的路径

默认生成的 core 文件保存在可执行文件所在的目录下,文件名就为core。

通过修改/proc/sys/kernel/core_uses_pid文件可以让生成 core 文件名是否自动加上 pid  号。

例如echo 1 > /proc/sys/kernel/core_uses_pid,生成的 core 文件名将会变成core.pid,其中 pid 表示该进程的 PID 。

还可以通过修改/proc/sys/kernel/core_pattern来控制生成 core 文件保存的位置以及文件名格式。

例如可以用echo "/tmp/corefile-%e-%p-%t" > /proc/sys/kernel/core_pattern设置生成的 core 文件保存在 “/tmp/corefile” 目录下,文件名格式为 “core-命令名-pid-时间戳”。

%c 转储文件的大小上限

%e 所dump的文件名

%g 所dump的进程的实际组ID

%h 主机名%p 所dump的进程PID

%s 导致本次coredump的信号

%t 转储时刻(由1970年1月1日起计的秒数)

%u 所dump进程的实际用户ID

http://www.cnblogs.com/hazir/p/linxu_core_dump.htm

http://blog.csdn.net/u013010310/article/details/50578691

https://www.cnblogs.com/Anker/p/6079580.html

相关文章

  • Linux调试相关

    Linux core dump 设置设置 core dump 大小ulimit -c n或者修改文件 /etc/s...

  • linux编程之 Core Dump

    一、Core Dump 定义 Core Dump 又叫核心转存。当程序在运行过程中发生异常,这时Linux系统可以...

  • core dump

    参考: Core dump 打开及配置 Core Linux文档 示例: 打开 配置 生效 查看

  • Accelerated Linux Core Dump Anal

    下载地址:Accelerated Linux Core Dump Analysis Training Course...

  • native调试方法

    linux错误信号 Term 终止进程Core 输出core dump 信号 取值 默认动作 含义...

  • 翻译:How to enable core dump in my

    Stack overflow地址:How to enable core dump in my Linux C++ ...

  • MySQL使用core-file 还原堆栈信息

    1、打开linux的core文件配置:ulimit -c unlimited2、配置 core-file dump...

  • linux core dump

    core dump:(内存快照)在linux中当程序发生异常中止或者崩溃时,操作系统会将程序当时的内存状况记录下来...

  • linux core dump

    core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储...

  • linux 内核参数core_pattern测试

    linux 内核参数core_pattern测试 参数介绍 简单来说,该参数就是可以设定core dump文件的文...

网友评论

      本文标题:linux core dump

      本文链接:https://www.haomeiwen.com/subject/mycmqftx.html