5
(我只針對Linux)誰生成核心轉儲文件?內核還是glibc?
我假設core是由glibc的默認信號處理程序生成的。
但是,如果我谷歌大多數的結果說OS生成核心轉儲。如果OS生成核心,信號處理程序將首先被調用(或)核心轉儲?
(我只針對Linux)誰生成核心轉儲文件?內核還是glibc?
我假設core是由glibc的默認信號處理程序生成的。
但是,如果我谷歌大多數的結果說OS生成核心轉儲。如果OS生成核心,信號處理程序將首先被調用(或)核心轉儲?
內核自己生成coredump。請參閱核心處理例程在這裏的Linux內核源:
http://lxr.linux.no/linux+v3.12.6/fs/coredump.c
如果進程收到以下信號1的,內核試圖通過一個核心轉儲響應。
#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
此信息轉儲是可配置的,並且可以通過多種方式,包括文件/proc/sys/kernel/core_pattern
,並且ulimit
被禁用或控制。也可以通過信號處理機制來控制這些信號的傳送。
核心傾倒首先或信號處理程序首先調用? –
序列爲:1-事件發生(如分段故障)2-內核通過信號通知此事件的進程3-進程處理信號(用戶安裝的或默認處理程序)4-在大多數情況下,上述信號觸發核心處理器動作通過默認的信號處理程序。 – Peter