版权声明:本文为博主原创文章,未经博主允许不得转载。 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.***
如下图所示:
运行截图如下: