Linux 谁生成核心转储文件?内核还是glibc?
(这里我只针对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内核源代码中的核心处理例程: 如果进程接收到以下任何信号,内核将通过尝试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操作。