C生万物 ● 大道至简 ● 鲍鱼科技
对应的视屏链接:C语言零基础入门_哔哩哔哩_bilibili
目录
目标
掌握基本的调试步骤
掌握打断点,监视器、内存的查看
学会常用的调试手段和快捷键
一、为什么要调试
人有失手,马有失蹄,孰能无错,编写代码也是如此
程序一旦不能按照预期执行,我们就说代码发生了Bug,排查Bug的过程就是调试
调试不能仅依赖人眼,需要借助工具,即调试器
二、调试到底调什么
一句话:人机合一
首先人的知道程序什么情况是正确的
其次人还需知道程序的执行流程
最后就是单步执行,看程序的结果是否符合人的预期,如果不符,说明有误,就需要分析原因,这个过程就是调试
三、调试术语
单步调试
逐过程 :F10
逐语句 :F11
调试 :F5
打断点 :F9
监视器
内存窗口
四、调试的两种方式
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
bool isRoseNumber(int n)
{
int sum = 0;
int val = n;
while (val)
{
sum += pow(val%10, 4);
val /= 10;
}
return sum == n; //true or false
}
int main()
{
int val;
printf("input value : >");
scanf("%d", &val);
//判断是否为四叶玫瑰数
if (isRoseNumber(val))
printf("%d是四叶玫瑰数.\n", val);
return 0;
}
1、直接F10 or F11单步调试
直接从主函数的第一行开始单步执行
2、直接跳到断点处
首先打断点,然后F5,程序直接在断点处停下,然后继续单步执行
五、调试过程中的两个重要窗口
注意,这两个窗口要想调出是有条件的,必须先调试起来才可以找到,否则是没有选项的!!!
1、监视器
2、内存窗口
六、文心一言
https://yiyan.baidu.com/
六、作业
【要求】先自行完成,再对照代码
BC152 The Biggest Water Problem
#include <stdio.h>
int Sum(int val)
{
int res = 0;
while(val)
{
res += (val % 10);
val /= 10;
}
return res;
}
int main()
{
int val;
scanf("%d", &val);
while(val >= 10)
val = Sum(val);
printf("%d", val);
return 0;
}
BC163 牛牛的替换
#include <stdio.h>
int main()
{
int n;
char a1, a2, a3, a4;
scanf("%d %c %c %c %c", &n, &a1, &a2, &a3, &a4);
char str[n+1];
scanf("%s", str);
str[n] = '\0';
for(int i=0; i<n; ++i)
{
if(str[i] == a1)
str[i] = a2;
if(str[i] == a3)
str[i] = a4;
}
printf("%s", str);
return 0;
}