> 文章列表 > linux coredump

linux coredump

linux coredump

文章目录

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

reference:

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

GDB是什么?

是什么

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

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

linux coredump

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 文件,最终磁盘被打满。