目录
Bug
Bug一词的原意是“昆虫”或“虫子”;而在电脑系统或程序中隐藏着的一些未被发现的缺陷或问题,人们也叫它“bug”。
什么是调试
人们将发现Bug并加以纠正的过程叫做“Debug”(中文称作“调试”)
在调试中我们发现有Debug和Release选项两者又什么不同呢?
Debug和Release
简介快捷键+窗口
F5 启动调试,经常用来直接跳到下一个断点处
F9 创建断点和取消断点
F10 逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句
F11 逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部
F5配合F9使用可以达到节省调试时间,减少调试次数,还有更多的快捷键就不一一介绍了可以看后面的链接有着详细的快捷键使用方式 VS中常用的快捷键_MrLisky的博客-CSDN博客_vs快捷键
接下来我们来看看协助调试的窗口
要注意这些窗口需要在代码调试起来了在使用
我们主要介绍一下内存
1:表示地址,向下地址增加
2:表示其中每两个数字表示一个字节中二进制的内容,显示是以16进制显示,可以通过修改列数来显示不同字节方便查找。
3:表示二进制对应反应的文本信息,没什么意义一般忽略
实例
掌握这些我们就来试着看一道笔试题
#include<stdio.h>
int main()
{
int i = 0;
int arr[10] = {0};
for(i=0; i<=12; i++)
{
arr[i] = 0;
printf("hehe\n");
}
return 0; }
首先我们可以看见产生了越界,所以打印的结果是什么呢
可以看到产生了死循环,结果知道了,可是为什么呢?接着我们就来分析一下这道笔试题
讲讲它为什么会这样
以上是在写完代码调试Bug的过程,我们最好是在编写代码时就避免产生Bug,如何写出好代码呢
写出好的代码
![](https://img-blog.csdnimg.cn/8240530ae6c24df8bd3932b1340cd78b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBAY2NoZW4uODM1,size_17,color_FFFFFF,t_70,g_se,x_16)
assert(src!=NULL);//assert(src);断言 条件为真无事,为假则报错
2.尽量使用const
const修饰变量 这个变量被称为变常量不能被修改,但本质为变量
const如果放在*的左边修饰的是*p,表示指针指向的内容是不能通过指针来改变的
const int a=10;
a=20;//err a不能被修改
const int* p=&a;
*p=20//err *p不能修改
const如果放在*的右边修饰的是p表示指针变量不能被改变但指针的内容可以被改变
const int a = 10;
int* const p = &a;
*p = 20;
int b = 20;
p = &b;//err p不能修改
3.养成良好的编程分格
4.添加必要的备注
5.避免编程陷阱
编程常见错误
1.编译型错误: 代码会报错
2.链接型错误: LNK20 链接错误
3.运行时错误: 借助调试,逐步定位
以上是VS调试的一些办法掌握以上方法就可以试着调试代码了,说的再多不如多加练习