调试嵌入式Linux时发现前台运行的程序可以生成CoreDump而后台程序不行
linux下的c程序常常会因为内存访问错误等原因造成segment fault,此时如果系统core dump功能是打开的,那么将会有内存映像转储到硬盘上,之后可以用gdb对core文件进行分析,查看系统发生segment fault时刻的情况。
使用ulimit -a可以查看系统core文件的大小限制 使用ulimit -c[kbytes]可以设置系统允许生成的core文件大小
例如: ulimit -c 0 不产生core文件 ulimit -c 100 设置core文件最打为100k ulimit -c unlimited 不限制core文件大小。
#includestdio.h
void main()
{
int *p =(int *)0;*p =1;
}
编译上面这段代码,gcc memory.c -g -o memory ;
执行ulimit -c 100设置core文件大小为无限制 ;
执行./memory,系统提示你segment fault并生成了core文件,接下来可以用gdb进行分析了;
gdb ./memory core