一位同行询问为什么在他的CentOS系统里找不到core文件。对于这样的问题,老雷是非常有兴趣的。于是要了个账号,SSH上去,用vi输入几行代码,故意包含一个除零异常:
int main(int argc, char * argv[])
{
int n,m=0;
n = argc/m;
return n;
}
随后用gcc编译,执行,果然崩溃。系统是中文的,提示消息让我差点跌掉眼镜:
浮点数意外(吐核)
好一个吐核!英文原文是core dumped,翻译为吐核,真是让人喷饭。不知道是何人的智慧?难道是机器翻译的么?
这里的core是有点难理解的,即使是软件专业的人可能也不知其所以然。正确的理解是这样的。这里的core是指历史上曾经无比风光的磁核内存。从上世纪50年代到70年代的20多年里,它一直是占垄断地位的内存技术,是计算机系统中不可缺少的关键部件。直到RAM出现,它才退出历史舞台。
几十年过去了,core内存只有在博物馆里才能见到了。虽然如此,core dumped这个词却常出现。虽然很多专业程序员可能也不知道core的历史,但是大多都知道它是用来帮助调试的。所以上面的“吐核”,多半出自某个非计算机专业的翻译之手。
观察一下version文件,系统确实是大名鼎鼎的CentOS:
[root@netmonitor raymond]# cat /proc/version
Linux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.3 20140911 (Red Hat 4.8.3-9) (GCC) ) #1 SMP Thu Nov 19 22:10:57 UTC 2015
于是,不仅想问中文翻译难道没有review过么?汗啊!
顺便说一下,core文件的位置是可以配置的,观察当前配置的方法很简单,只要:
cat /proc/sys/kernel/core_pattern
到显示出的位置一看,其实core文件已经产生了。