文章目录
- 是什么
- 生成原理
- coredump 的“危害”
reference:
一文读懂Coredump文件是如何生成的
GDB是什么?
是什么
简单的讲:当进程接收到某些信号而导致异常退出时,就会生成 coredump 文件
在程序发生某些错误而导致进程异常退出时,Linux 内核会根据进程当时的内存信息,生成一个 coredump 文件。而 GDB 可以通过这个 coredump 文件重现当时导致进程异常退出的场景,并且可以通过 GDB 来找到导致进程异常退出的原因。
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 文件,最终磁盘被打满。