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】头文件。