一.Debug和Release版本的区别
Debug版本通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便为用户更好的使用
二.几个常用的快捷键
- F5
其作用是打开调试功能,当没有打断点的情况下,程序会直接正常运行结束
- F9
其作用是在光标所在的那一行加上断点,在按下F5之后程序会自动的运行到这一行
同时,右键断点,还可以设置断点的条件
![](https://img-blog.csdnimg.cn/img_convert/22c85fe768fee146d773fd4188ac3f46.png)
![](https://img-blog.csdnimg.cn/img_convert/2362ed6bdc7a24e0b257c4b1409ce02a.png)
直接就停在这里
- F10
逐过程进行调试,其特点就是每一个语句都依次进行,并且把函数入口也作为一个语句,并不会进入到函数中去
![](https://img-blog.csdnimg.cn/img_convert/6dc05a87aec24bfba48935ac6e8d461e.png)
比如这个代码,断点打在了第43行,如果你这个求和函数写错了(当然还是最好不要),你需要进入到求和函数里面去看看里面的数值变化,千万不要在断点到45行的时候按下F10,否则进不去函数内部,此时就需要按下F11,才能进入到函数内部进行检查
4.F11
其用法和F10的用法类似,唯一不同的一点就是在遇到函数语句时,按下F11,会进入到函数内部
三.多种调试方式
![](https://img-blog.csdnimg.cn/img_convert/b90e82da1ef71d140b3f6163618c2178.png)
注意这个窗口只有在调试的时候才能出现
- 自动窗口
![](https://img-blog.csdnimg.cn/img_convert/be5fb867d069c502b5d1ed89176b1275.png)
我们可以看到,在这种情况下,当我们想要看局部变量的时候,必须要让程序经过这个变量申请的语句才行,并且,当调试进入函数的时候,我们也只能观察函数内部的参数(x,y),而a,b是看不到了
2.监视窗口
![](https://img-blog.csdnimg.cn/img_convert/35945a1cbf7c062c44d1eaf4bcd7acc6.png)
只要我们将想要观察的数据输入到“添加要监视的项”中,无论我们进入哪些函数,或者进行到任何一句,我们都可以在监视窗口看到变量此时的值,所以一般都推荐使用监视窗口
3.内存窗口
![](https://img-blog.csdnimg.cn/img_convert/17db1e93c5fc1e40039c7176351cb54f.png)
注意输入的是地址才能查看,如果是变量a,我们在地址栏就需要输入&a之后才能查看a在内存中的储存情况,因为arr数组名本身就是地址,因此就不需要带&
4.调用堆栈窗口
此窗口是方便你知道各个函数之间的调用关系
![](https://img-blog.csdnimg.cn/img_convert/41419bc962753aeffb6b0500862b95b8.png)
在右边,就可以显示你从main函数开始,依次调用的函数,方便你理解函数的组装情况
5.反汇编
![](https://img-blog.csdnimg.cn/img_convert/a5168b595361b926dad6735604f52460.png)
直接就可以看到反汇编代码,这里我们只需要知道怎么看反汇编代码即可
四.什么是好的代码
![](https://img-blog.csdnimg.cn/img_convert/7a4813789b28062d005dd5fc31f0d05c.png)
这里借用bit上课讲的东西