Core File的生成和命名

时间:2022-08-13 12:27:15 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

当系统中的一些程序在遇到一些错误以及crash时,系统会自动产生corefile记录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的大小之外,还可以对corefile的名称进行一些规定。

这种设置是对/proc/sys/kernel/core_pattern和/proc/sys/kernel/core_uses_pid这两个文件进行修改。

改动这两个文件的方法是:

echo <pattern> > /proc/sys/kernel/core_pattern

如直接在sysctl.conf中设置如下

kernel.core_pattern = /home/corefiles/core-%e-%p-%t

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中可以包含路径信息。

core文件的设置

/proc/sys/kernel/core_uses_pid可以控制core文件的问价名是否添加PID作为扩展,文件的内容为1,

标识添加PID作为扩展,生成的core文件格式为core.XXXX;为0则表示生成的core文件统一命名为core;

本文来源:https://www.wddqw.com/doc/f86ad7957c1cfad6195fa7e3.html