Linux 谁生成核心转储文件?内核还是glibc?

Linux 谁生成核心转储文件?内核还是glibc?,linux,gcc,linux-kernel,glibc,coredump,Linux,Gcc,Linux Kernel,Glibc,Coredump,(这里我只针对Linux) 我假设核心是由glibc的默认信号处理程序生成的 但若我用谷歌搜索,结果显示操作系统会生成一个核心转储。如果操作系统生成内核,信号处理程序将首先调用(或)内核转储?内核本身生成内核转储。请参阅linux内核源代码中的核心处理例程: 如果进程接收到以下任何信号,内核将通过尝试coredump进行响应 #define SIG_KERNEL_COREDUMP_MASK (\ rt_sigmask(SIGQUIT) | rt_sigmask(SIGILL) |

(这里我只针对Linux)

我假设核心是由glibc的默认信号处理程序生成的


但若我用谷歌搜索,结果显示操作系统会生成一个核心转储。如果操作系统生成内核,信号处理程序将首先调用(或)内核转储?

内核本身生成内核转储。请参阅linux内核源代码中的核心处理例程:

如果进程接收到以下任何信号,内核将通过尝试coredump进行响应

#define SIG_KERNEL_COREDUMP_MASK (\
rt_sigmask(SIGQUIT)   |  rt_sigmask(SIGILL)    | \
rt_sigmask(SIGTRAP)   |  rt_sigmask(SIGABRT)   | \
rt_sigmask(SIGFPE)    |  rt_sigmask(SIGSEGV)   | \
rt_sigmask(SIGBUS)    |  rt_sigmask(SIGSYS)    | \
rt_sigmask(SIGXCPU)   |  rt_sigmask(SIGXFSZ)   | \
SIGEMT_MASK  

此coredump是可配置的,可以通过多种方式禁用或控制,包括文件
/proc/sys/kernel/core\u模式
,以及
ulimit
。还可以通过信号处理机制控制这些信号的传递。

内核转储优先或信号处理程序调用优先?顺序是:1-事件发生(如分段故障)2-内核通过信号通知进程3-进程处理信号(用户安装或默认处理程序)4-在大多数情况下,上述信号通过默认信号处理程序触发coredump操作。