linux coredump

文章目录

    • 是什么
    • 生成原理
    • coredump 的“危害”

reference:

一文读懂Coredump文件是如何生成的

GDB是什么?

是什么

简单的讲:当进程接收到某些信号而导致异常退出时,就会生成 coredump 文件

在程序发生某些错误而导致进程异常退出时,Linux 内核会根据进程当时的内存信息,生成一个 coredump 文件。而 GDB 可以通过这个 coredump 文件重现当时导致进程异常退出的场景,并且可以通过 GDB 来找到导致进程异常退出的原因。

linux coredump_第1张图片

GDB 是什么?

GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。

生成原理

前置知识

进程可以分成用户态进程和内核态进程两类。 用户态进程通常是应用程序的副本,内核态进程就是内核本身的进程

进程从内核态返回到用户态前,内核会查看进程的信号队列中是否有信号没有处理,如果有就调用 do_signal 内核函数处理信号,如果要处理的信号会触发生成 coredump 文件,那么内核就会调用 do_coredump 函数生成 coredump 文件。

coredump 的“危害”

如果代码有异常频繁触发上图中的信号会不停的生成 coredump 文件,最终磁盘被打满。

你可能感兴趣的:(BE,linux,运维)