linux編程中往往遇到segment fault段錯(cuò)誤,定位到錯(cuò)誤位置對(duì)解決問題有很大幫助邦马,如果要生成core文件,需要打開core dump功能
1)代碼打開
struct rlimit rlmt;
if (getrlimit(RLIMIT_CORE, &rlmt) == -1) {
return -1;
}
printf("Before set rlimit CORE dump current is:%d, max is:%d\n", (int)rlmt.rlim_cur, (int)rlmt.rlim_max);
rlmt.rlim_cur = (rlim_t)CORE_SIZE;
rlmt.rlim_max = (rlim_t)CORE_SIZE;
if (setrlimit(RLIMIT_CORE, &rlmt) == -1) {
return -1;
}
if (getrlimit(RLIMIT_CORE, &rlmt) == -1) {
return -1;
}
printf("After set rlimit CORE dump current is:%d, max is:%d\n", (int)rlmt.rlim_cur, (int)rlmt.rlim_max);
2)命令行打開
ulimit -c 1024
下面展示一段出現(xiàn)指針非法訪問程序
int *ptr = NULL;
*ptr = 10;
編譯時(shí)候该镣,打開-g選項(xiàng)
gcc -g xx.c
運(yùn)行可執(zhí)行文件后(在linux系統(tǒng)下)廓译,在當(dāng)前執(zhí)行路徑下生成core.xxxx文件,實(shí)用gdb調(diào)試乙濒,調(diào)試命令
gdb a.out core.30377 #a.out 為可執(zhí)行文件
輸入bt命令陕赃,可以定位到段錯(cuò)誤位置信息
5721585732776_.pic.jpg