编译器只能检查语法错误,无法检查代码逻辑错误,因此需要依靠调试工具来检查业务逻辑问题。
源码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void test1()
{
printf("-----------test 1111111---------\n");
printf("-----------test 2222222---------\n");
}
void test2()
{
int i = 9;
int *p = 0;
*p = i; //解引用空指针错误
}
int main() {
printf("test1 开始\n");
test1();
printf("test1 结束\n");
printf("test2 开始\n");
test2();
printf("test2 结束\n");
return 0;
}
编译源码必须加 -g 参数
gcc ubuntuTest.c -g -o testgdb
进入gdb调试
gdb testgdb
调试步骤