携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第19天,点击查看活动详情
调试步骤
- 发现
bug你要知道你的程序有bug - 定位
大概知道,
bug出现的代码区域位置。 - 找到
bug经过你的一番查找,然后找出bug把找到! - 改
bug你需要指定一个方案,将出现bug的代码修改。 - 重新运行 运行更改后的代码,发现是否成功!
学会这5步,让你不在迷行调试。让bug无处躲藏!
Debug和Release区别
在调试之前不得不介绍一下Debug和Release区别
可以看到我们
VS配置管理器下面有两个版本,Debug和Release这两个版本有什么区别呢?
Debug
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release
Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优 的,以便用户很好地使用。
代码:
#include<errno.h>
#include<stdlib.h>
int main()
{
//打开文件
FILE* pf = fopen("data.txt", "w");
if (NULL == pf)
{
perror("fopen");
return -1;
}
//读文件,随机读写
//
//关闭文件
fclose(pf);
pf = NULL;
return 0;
}
可以看到一个程序在不同的版本下运行后,生成的程序文件大小不同,
Release发布版本明显小于Debug调试版本。
因为Release版本,将代码进行了优化,并且不能调试。
我们的调试都要在Debug版本下才能进行。
Release的优化
博主,你说优化就优化了啊,拿出证据!
上代码:
#include<stdio.h>
int main()
{
int i = 0;
int arr[10] = { 0 };
for (i = 0; i <= 12; i++)
{
arr[i] = i;
}
return 0;
}
Debug报错
Release运行成功!
我们一起分析一下这个代码,这个代码明显有问题,为啥在
Release下编译过去了呢?
这是因为Release进行的优化,变量的储存位置也不一样。
这个代码的具体问题会在调试案例中具体讲到!