(这里我只针对Linux)
我假设核心是由glibc的默认信号处理程序生成的.
但如果我谷歌大多数结果说操作系统会产生核心转储.如果OS生成核心,信号处理程序将首先被调用(或)核心转储?
解决方法:
内核本身生成coredump.在这里查看linux内核源代码中的核心处理例程:
http://lxr.linux.no/linux+v3.12.6/fs/coredump.c
如果进程收到以下任何信号1,则内核通过尝试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_pattern和ulimit.人们还可以通过信号处理机制控制这些信号的传递.