sjpisaboy

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
         当系统中的一些程序在遇到一些错误以及crash时,系统会自动产生core file记录crash时刻系统信息包括内存和寄存器信息,用以程序员日后debug时可以使用。这些错误包括断错误,非法指令,总线错误和用户自己生成的退出信号等等。一般的,core file会在当前文件夹中存放。
         core file有时可能在你发生错误时,并没有出现在你的当前文件夹中,发生这种情况的原因有两个,一个是当前终端被设置为不能弹出core file;另一种则是core file被制定了路径。
         对于前者,我们可以使用ulimit这条命令对core file文件的大小进行设定。一般默认情况下,core file的大小被设置为了0,这样系统就不dump出core file了。这时用如下命令进行设置:
ulimit -c unlimited
这样便把core file的大小设置为了无限大,同时也可以使用数字来替代unlimited,对core file的上限值做更精确的设定。
         除了可以设置core file的大小之外,还可以对core file的名称进行一些规定。这种设置是对/proc/sys/kernel/core_pattern和/proc/sys/kernel/core_uses_pid这两个文件进行修改。改动这两个文件的方法是:
echo <pattern> > /proc/sys/kernel/core_pattern
echo <"0"/"1"> > /proc/sys/kernel/core_uses_pid
并且注意,只有超级用户可以修改这两个文件。
         core_pattern接受的是core file名称的pattern,它包含任何字符串,并且用%作为转移符号生成一些标识符,为core file名称加入特殊含义。已定义的标识符有如下这些:
%%: 相当于%
%p: 相当于<pid>
%u: 相当于<uid>
%g: 相当于<gid>
%s: 相当于导致dump的信号的数字
%t: 相当于dump的时间
%h: 相当于hostname
%e: 相当于执行文件的名称
除了这些标识符之外,还规定:
1.末尾的单个%可以直接去除。
2.%加上除上述之外的任何字符,%和该字符都被去除。
3.所有其他字符都作为一般字符加入名称中。
4.core file的名称最大值为64字节(包括\0)。
5.core_pattern中的默认pattern为core。
6.为了保持兼容性,通过设置core_uses_pid,可以在core file名称的末尾加上%p。
7.pattern中可以包含路径信息。
posted on 2005-08-08 19:24  Brendan  阅读(5692)  评论(0编辑  收藏  举报