生成core文件
默认为输入可执行文件运行命令的同一路径下。
查看core文件的生成开关:ulimit -c,若结果为0,则表示关闭了此功能,不会生成core文件。
限制core文件大小:ulimit -c 1024 将core文件限制为1024KB。如果生成的信息超过了将会被裁剪,生成一个不完整的core文件,调试此core文件时,gdb会提示错误。
core文件的大小不受限制:ulimit -c unlimited
//生成core文件
#include <stdlib.h>
void repeatFree(char *p)
{
if(NULL != p)
free(p);
}
int main()
{
char* pstr =(char*) malloc(10);
repeatFree(pstr); // 第一次释放
repeatFree(pstr); // 第二次释放
return 0;
}
gcc -g test.c -o test
./test //重复释放内存,产生段错误,生成core文件
调试core文件
gdb ./test core.6228
(gdb) r
(gdb) bt
bt
#0 0x000000317ee32495 in raise () from /lib64/libc.so.6
#1 0x000000317ee33c75 in abort () from /lib64/libc.so.6
#2 0x000000317ee703a7 in __libc_message () from /lib64/libc.so.6
#3 0x000000317ee75dee in malloc_printerr () from /lib64/libc.so.6
#4 0x000000317ee78c3d in _int_free () from /lib64/libc.so.6
#5 0x0000000000400523 in repeatFree (p=0x601010 "") at test.c:6
#6 0x0000000000400553 in main () at test.c:13