【问题标题】:What happens internally when the core dump is generated生成核心转储时内部会发生什么
【发布时间】:2021-12-27 04:50:56
【问题描述】:

本题主要针对Linux操作系统。 下面的命令在系统中启用核心转储生成。

ulimit -S -c 无限

谁能提供更多关于当任何应用程序崩溃以及何时生成核心转储时内部发生的情况的详细信息。

  1. 谁跟踪应用程序的终止
  2. 谁生成核心转储
  3. 它是如何产生的?我们可以手动生成核心转储吗?
  4. 内部为此需要哪些软件包?

任何参考都会有很大帮助。

提前致谢。

【问题讨论】:

  • 可能是操作系统负责其中大部分内容,但不确定。

标签: linux debugging system coredump


【解决方案1】:

我不久前创建了一篇简短的博客文章,旨在回答问题 1 和 2 以及问题 3 的一部分 https://venshare.com/blog/what-is-a-core-dump

对于 3 的另一部分 - 您可以通过向此处发送信号来手动生成 coredump https://man7.org/linux/man-pages/man7/signal.7.html

例如要发送 SIGQUIT 等信号,请使用 kill 命令

kill -3 [pid]
  1. 您不需要在操作系统上安装任何东西,只需确保设置了 ulimit 并将 kernel.core_pattern 设置为捕获机制。 您还应该注意可能与某些进程一起使用的 suid_dumpable 位。 https://serverfault.com/questions/56800/on-redhat-what-does-kernel-suid-dumpable-1-mean

根据以下 Ben 的观点更新

【讨论】:

  • 有许多不同的信号会生成核心转储作为其默认操作(man7.org/linux/man-pages/man7/signal.7.html 并在表中查找“核心”),其中 SIGSEGV 是一个相对较差的选择,因为它是更常见的是安装了自定义处理程序。
  • 感谢 Ben,我的本意是以 SIGSEGV 为例,但在重新阅读我的帖子时,确实给人的印象是 SIGSEGV 是创建核心的唯一方法:/ 很好!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-09
  • 2014-01-24
  • 1970-01-01
相关资源
最近更新 更多