VS调试技巧 您所在的位置:网站首页 plc程序如何下载调试运行与监控运行 VS调试技巧

VS调试技巧

2024-07-10 23:56| 来源: 网络整理| 查看: 265

1.什么是bug?

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

2.调试 2.1什么是调试?

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

2.2 debug和release

在这里插入图片描述 Debug 称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序; Release 称为发布版本,它往往是进⾏了各种优化,使得程序在代码⼤⼩和运⾏速度上都是最优的,这个版本是⽤⼾使⽤的,⽆需包含调试信息等。

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

3.调试快捷键

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

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

4.监视与断点 4.1监视

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

在这里插入图片描述

在这里插入图片描述 比如下面这段代码,按F10后,打开监视,输入要监视的变量,就可以观察变量的变化过程和代码的运行过程 在这里插入图片描述

4.2断点(要配监视)

在这里插入图片描述 可以直接用鼠标在相应位置找到相应语句设置断点,也可以选中语句用F9设置 下面来按F5调试: 在这里插入图片描述 可以发现直接跳到了断点处,由test是三可判断:断点处的语句未执行 在这里插入图片描述 接着按F10,代码就从断点处继续往下运行,此后接着按F10,循环中不受断点影响,正常按流程走 下面试试按两次F5: 假设下面一张图是初始状态 在这里插入图片描述 在这里插入图片描述 如果按两次F5,就会直接从上一个断点位置又直接跳到下一次循环中,这个断点处

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

4.3条件断点

右击断点,选择条件 在这里插入图片描述 把test设成6 在这里插入图片描述 条件断点设置完成 F5调试: 在这里插入图片描述 test就直接来到了6

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

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

在这里插入图片描述 在初始化棋盘的位置打个断点 F11进入函数内部(跟上面的操作一样) 在这里插入图片描述

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函数内部 在这里插入图片描述 可以看到,有10个元素的一维数组arr里面只显示第一个数“1” 这时候,在监视里输入“arr1,10"表示要观察10个元素 在这里插入图片描述 此时元素全展现出来了 在监视中输入“arr2"时,打入test2函数内部 在这里插入图片描述 看到元素一溜不分行列的展示 这时候改成“arr2,3"表示要看arr2数组里3行元素

在这里插入图片描述 看效果

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有