Linux下生成core dump文件

在Linux下编写的程序崩溃后,本机调试很容易,但如果在客户现场崩溃就需要产生DUMP文件,再发回公司给开发解决了,具体步骤如下:

1、设置崩溃后产生的core dump文件名。Linux启用core dump机制后,默认产生的dump文件名为core.pid,如果一个目录有多个可执行文件则不利于快速定位属于那个程序。此文件名的设置由【/proc/sys/kernel/core_pattern】控制,注意此设置在重启后会还原,因此需要在程序运行时设置一次,代码如下:

1
system("echo \"dump.%e.%p.%h.%t\">/proc/sys/kernel/core_pattern");

2、设置允许产生崩溃文件。Linux默认不开启此功能,可用【ulimit -S -c 100】进行全局设置,但我们也可以单独控制本程序崩溃后产生DUMP文件,代码如下:

1
2
struct rlimit res = {.rlim_cur = RLIM_INFINITY, .rlim_max = RLIM_INFINITY};
setrlimit(RLIMIT_CORE, &res);

3、然后就是主动崩溃以测试能否生成dump文件了,代码如下:

1
2
char* s = "abc";
*s = 'x';

4、编译,运行,发现已经在当前目录生成dump文件。

PS:注意引用【sys/resource.h】头文件。


posted @ 2015-04-03 10:26  流星无语  阅读(453)  评论(0编辑  收藏  举报