VS调试技巧—监视,断点使用精解,及数组的监视技巧

1.什么是bug?

bug在电脑系统和程序中应用很广,泛指程序漏洞
在VS中写代码的时候,bug可以分为以下几种:
1.编译型错误
这是最好改也最好避免的(就是手滑错误呗)
比如:忘加“ ; ” 用成中文输入法,忘加另一个大括号等
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第1张图片
2.链接型错误:
比如:* 变量名字打错了,找不到匹配的变量
* 用printf()时没有包含头文件:
* 引入了函数但是函数还没创建
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第2张图片
3.运行时错误
这是真正严重的bug,可能是逻辑漏洞
比如:输出二维数组时候,换行的位置加错( printf(“\n”) )
比如:在一次循环完成的时候,需要将循环中的变量初始化,但没初始化
等等

2.调试

2.1什么是调试?

找问题的过程叫调试,英文叫debug(消灭bug)
可以是逐过程的调试,也可以是隔离和屏蔽代码的⽅式,找到问题所的位置,然后确定错误产⽣的原因,再修复代码

2.2 debug和release

VS调试技巧—监视,断点使用精解,及数组的监视技巧_第3张图片
Debug 称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序;
Release 称为发布版本,它往往是进⾏了各种优化,使得程序在代码⼤⼩和运⾏速度上都是最优的,这个版本是⽤⼾使⽤的,⽆需包含调试信息等。

你从vs上改成release版本,只能运行,但按F10就调试不了了

3.调试快捷键

好像联想电脑上的F10是截屏,以下这些快捷键同理,如果不成功,就带上fn一起按试试

F9:创建和取消断点(断点下面精讲)
F5:启动调试,经常⽤来直接跳到下⼀个断点处
F10:逐过程运行,但不会打入函数内部
F11:逐语句运行,运行到函数时能进入函数内部
ctrl K,ctrl C:变成注释
ctr K,ctrl U:取消注释

4.监视与断点

4.1监视

开始调试后,在菜单栏中【调试】->【窗⼝】->【监视】
一定要开始调试后才有监视!!

VS调试技巧—监视,断点使用精解,及数组的监视技巧_第4张图片

VS调试技巧—监视,断点使用精解,及数组的监视技巧_第5张图片
比如下面这段代码,按F10后,打开监视,输入要监视的变量,就可以观察变量的变化过程和代码的运行过程
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第6张图片

4.2断点(要配监视)

VS调试技巧—监视,断点使用精解,及数组的监视技巧_第7张图片
可以直接用鼠标在相应位置找到相应语句设置断点,也可以选中语句用F9设置
下面来按F5调试:
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第8张图片
可以发现直接跳到了断点处,由test是三可判断:断点处的语句未执行
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第9张图片
接着按F10,代码就从断点处继续往下运行,此后接着按F10,循环中不受断点影响,正常按流程走
下面试试按两次F5:
假设下面一张图是初始状态
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第10张图片
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第11张图片
如果按两次F5,就会直接从上一个断点位置又直接跳到下一次循环中,这个断点处

断点的好处就是避免繁琐的一条一条语句执行,直接来到你感觉有问题的地方

4.3条件断点

右击断点,选择条件
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第12张图片
把test设成6
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第13张图片
条件断点设置完成
F5调试:
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第14张图片
test就直接来到了6

所以条件断点,就是满足条件后才跳到断点所在的语句,如果按F10再执行,test就变为7,这样的好处是在庞大的循环中能直接监视自己想看的区域

4.4举例扫雷中用断点观察函数

VS调试技巧—监视,断点使用精解,及数组的监视技巧_第15张图片
在初始化棋盘的位置打个断点
F11进入函数内部(跟上面的操作一样)
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第16张图片

5.在监视中,打入函数内部后怎样观察数组元素

void test1(int arr1[])
{

}
void test2(int arr2[][5])
{

}
int main()
{
	int arr1[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int arr2[3][5] = { {1,2,3},{5,5,5},{6,6,6} };
	test1(arr1);
	test2(arr2);
}

用这段代码来观察数组内值的变化
现在监视里输入 arr1,arr2
打入test1函数内部
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第17张图片
可以看到,有10个元素的一维数组arr里面只显示第一个数“1”
这时候,在监视里输入“arr1,10"表示要观察10个元素
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第18张图片
此时元素全展现出来了
在监视中输入“arr2"时,打入test2函数内部
VS调试技巧—监视,断点使用精解,及数组的监视技巧_第19张图片
看到元素一溜不分行列的展示
这时候改成“arr2,3"表示要看arr2数组里3行元素

VS调试技巧—监视,断点使用精解,及数组的监视技巧_第20张图片
看效果

所以,监视一维数组时,最好把元素个数加在后面
监视二维数组时,最好把行数加在后面

你可能感兴趣的:(c语言基础知识,笔记,学习方法,经验分享,笔记,microsoft,c语言)