作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
(这里我只针对 Linux)
我假设核心是由 glibc 的默认信号处理程序生成的。
但如果我用谷歌搜索,大部分结果都说操作系统生成核心转储。如果 OS 生成内核,信号处理程序将首先被调用(或)内核首先被转储?
最佳答案
内核本身生成核心转储。在此处查看 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
。还可以通过信号处理机制控制这些信号的传递。
关于linux - 谁生成核心转储文件?内核还是 glibc?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20969239/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!