GDB学习笔记(二)–调试段错误
常见的错误类型
1. 编译错误 --- 主要为语法错误
2. 运行错误 --- 主要为段错误
3. 逻辑错误 --- 主要为代码逻辑出错,运行不一定会报错
段错误形成的原因
访问系统数据区
比如:向0地址写入数据
// test1.c
#include <stdio.h>
int main(void)
{
int *iptr = NULL;
*iptr = 100;
return 0;
}
输出结果
[root@localhost test]# gcc -Wall -g test1.c -o test1
[root@localhost test]# ./test1
段错误
[root@localhost test]#
内存越界
比如:数组越界(不是所有的内存越界都报错)
// test2.c
#include <stdio.h>
int main(void)
{
int arr[5] = {1, 3, 5, 7, 9};
printf("%d\n", arr[600]);
arr[600] = 100;
printf("%d\n", arr[600]);
return 0;
}
运行结果
[root@localhost test]# gcc -Wall -g test2.c -o test2
[root@localhost test]# ./test2
0
100
[root@localhost test]#
这个例子中,数组越界访问