C—初阶调试

对你有帮助的话能否一键三连啊!祝每个人心想事成! 

什么是Bug?

首先我们先了解一下日常口语中的“Bug”是什么

Bug可以理解为计算机程序错误,编程时的漏洞

调试及重要性

顾名思义,调试就是通过工具找出bug存在,找出代码里面的错误,否则出现漏洞,造成程序崩溃甚至经济损失

调试基本步骤

1:通过工具找出错误所在

2:通过各种方式对bug定位

3:确定产生bug的原因

4:提出解决方案

5:修改漏洞(bug),重新测试是否修改成功

Debug版本和Release版本介绍

在编译器中我们可以看见

Debug是调试版本,通常是程序员编辑代码时用的版本

Release是发布版本,用于优化代码性能,通常为发布版本,不可以调试

这两个版本都可以运行,不同的是性能区别,你可以理解为Debug是包装工厂的,然后再把它转化为Release版本发布给用户

同时在编写的代码文件位置,也有这两个文件

例如:我有一个动态爱心代码,那么在文件管理中我们可以看到这两个版本

Windows调试环境

我们先来认识几个快捷键,通常在调试上使用

 

我们可以看到这几个快捷键

F5,F11,F10 ,    B(新建断点)

我们一个个介绍

首先(一般我们直接按  F10  或者  F11  进入调试,F5很少用)

F5调试按钮,点开有调试效果,点它后会开始调试,(调试可以理解为检测代码),在有断点的地方停下

F10按F10后同样有调试效果,所以一般我们之间按F10或者F11(重要的是区别),就不再单独按调试(F5),在有断点的地方停下来

F11按F11同样有调试效果,但是同F10不同的是,按F11可以快速进入一个函数内部,如果你想观察一个函数的运行,可以点击F11,点F10就跳过去直接得出函数的返回值了,在有断点的地方停下来

B(放置断点):新建断点,让按F5或者F10或者F11后在这个断点的地方停下来,通常在需要观察的入口放一个断点,不然调试按钮后,程序就直接运行完了 

注意:如果要跨函数(一般我们写工程需要创建多个源文件),同样直接打个断点就行了,记得按F11进入函数啊!例如:

如何放置一个断点?

在需要放置断点的地方鼠标点击开对应最左边的灰色区域

 

下面我们看调试后的环境

例如:先进入调试环境,再打开窗口,就可以看到下面这幅图的效果了

 

我们再介绍几个经常用的功能 (如果你的F键功能区出现了多个按键效果,比如:加减音量,屏幕亮度,可以按      Fn+Esc     关闭其它功能区,再按一次就重新打开了,这样可以保证进入调试时没有其它功能效果干扰

首先第一个:监视

打开监视,可以看到下面这幅图最右边有四个监视口,大家随便点一个都行,这里没区别

 

点监视口后我们看到下面这幅图,输入你要监视的变量,就是“添加要监视的项”(比如printf, i,  数组名:Arr) ,输入好变量后,我们再按F11或者F10,一步步进行语句执行观察你输入的变量变化(注意,调试后语句会在之前说的那个断点停下来,所以一定要创建断点)

注意:输入的变量值会随着按F11或者F10逐渐发生变化

其次第二个,内存变化(地址) 

跟监视前面步骤差不多一样,我们直接选择四个内存中的一个(都可以选!看哪个顺眼)

 

 然后我们输入要观察的地址,比如“  &a  ”"  数组名:Arr(直接输入Arr,我这里是告诉你它是数组名)  ",就可以观察观察目标地址变化,或者你要查找变量的地址,直接输入就行了哦

注:最右边的那个‘’ 就是控制显示的列数,可以自己体验一下

我们经常用到是这几个按钮,在初阶我们掌握这几个就行了,只要在发现程序错误时,我们可以使用以下完整顺序查找错误:

 1:按  F10  或者  F11  或者  F5  快速进入调试

2:打开监视输入变量,或者想查看内存变化就打开  内存(M)

3:再按  F10  或者  F11  一个一个语句进行,观察输入变量的值的变化,查找错误地方

4:知道哪里错了后,去修改就行了

注意:调试查找Bug是每个程序员必须掌握的哦

我们来简单体验一下:(通过调试观察下面错误代码)

首先我们先在for循环那里打一个断点,F11或者F10进入调试

在监视那里输入  i    Arr每个数组元素 

同时可以看i每加一,打印了多少次 

大概效果就是这样,通过调试可以观察 到每个变量的变化,以便及时查找原因

如何写出好的代码

什么是好的代码,有以下特点

运行正常

bug少

效率高

可读性高

维护高

注释清晰

文档齐全

我们参考一个例子(用来拷贝字符串)

我们看几个问题

1:我们在拷贝字符串的同时,也改变了原来的那份(就是被复制的模板) 

2:if判断部分虽然很清晰,但是它可以省略,更加专业化

我们参考下面这幅图,对比一下

我们介绍1个功能

assert:   头文件cassert.h在后面写表达式,当不满足时可以报警,这相对于if多了一个警报,可以避免跳过错误直接返回:return 0

相比于原版本,我们解决了以下问题

1:备份了Urr,可以在返回时不用写成“return Urr-6” ,这样相比可以让读者更懂,当然要写备份注释啊

2:一条语句判断更简洁,这需要知道部分库函数功能

3:更加简洁,更专业哈哈!

编程常见错误

最后,我们简单了解一下几类错误,了解就行啊

语法错误,通常是不注意大小写,函数写错,掉了分号

链接型错误,比如没有包含头文件,库函数名字写错

运行错误,代码不能正常运行

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值