Linux学习笔记-段错误与内存转储

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq78442761/article/details/82120965

在Linux下,程序中如果进行了不正确的指针操作,则程序崩溃、提示"Segment Fault";

源码如下:

#include <stdio.h>

void test(int i){
	if(i==0){
		int *a;
		*a=10;
	}
	else{
		test(i-1);
	}
}

int main(){
	printf("main called!\n");
	test(10);
	return 0;
}

如下图所属:

如果此错误容易复现,则使用gdb,

如下所属:

段错误的定位

bt (backtrace) 查看错误时刻的栈信息

运行如下:

内存转储

二、此错误不容易复现
程序长年累月地运行,不知何时发生了段错误,程序异常关闭。

1. 在运行该程序的shell里运行命令
ulimit ‐c  unlimited
(注:在shell关闭重启后,要重新运行一次)
2. 运行程序
程序发生段错误时,程序退出,同时当发生错误时的信息转储(dump)到一个core.*文件。
3. 用gdb来查看发生段错误的代码位置gdb  helloworld   core.***

如下图所示:

运行截图如下:

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/82120965