设计师常去网站成都网站建设案例单招网
web/
2025/10/8 22:36:41/
文章来源:
设计师常去网站,成都网站建设案例单招网,广州网站设计公司排名,郑州中小企业网站制作--- 24.4.20
目录
1、什么是Bug#xff1f;
2、什么是调试#xff08;Debug#xff09;#xff1f;
3、Debug和Release
4、VS基础调试快捷键
4.1、环境准备
4.2、调试快捷键
5、监视和内存观察
5.1、监视窗口
5.2、内存窗口
6、调试举例1
7、调试举例2
8、调试… --- 24.4.20
目录
1、什么是Bug
2、什么是调试Debug
3、Debug和Release
4、VS基础调试快捷键
4.1、环境准备
4.2、调试快捷键
5、监视和内存观察
5.1、监视窗口
5.2、内存窗口
6、调试举例1
7、调试举例2
8、调试举例3
9、编程常见的错误归类
9.1、编译型错误
9.2、链接型错误
9.3、运行时错误 1、什么是Bug
一般指在电脑系统或程序中隐藏着的一些未被发现的缺陷或问题简称程序漏洞也叫Bug。
2、什么是调试Debug
当发现程序中存在问题时下一步就是找到问题并修复问题这个找问题的过程称为调试英文叫Debug是消灭问题的意思。
调试一个程序首先是承认出现了问题然后通过各种手段去定位问题的位置可能是逐过程的调试也可能是隔离屏幕代码的方式找到问题所在的位置然后确定错误产生的原因再修复代码重新测试。
3、Debug和Release Debug通常称为调试版本它包含调试信息并且不做任何优化便于程序员调试程序用Debug版本写代码编译产生的是Debug版本的可执行程序其中包含调试信息是可以直接调试的。
Release通常称为发布版本他往往进行了各种优化使得程序在代码大小和运行速度上都是最优的。当写完代码使其程序质量符合交付于用户使用的标准这时就会设置为Release版本这个是给用户使用的。
Debug由于包含了调试信息所以内存会更大一些。
4、VS基础调试快捷键
在这里我们将学习程序员是如何调试代码的
4.1、环境准备
首先是环境的准备需要一个支持调试的开发环境所以应把编译环境设置为Debug版本。
4.2、调试快捷键
F9创建断点和取消断点。
F5启动调试经常用来跳到下一个断点处一般是和F9配合使用。
F10逐过程通常用来处理一个过程一个过程可以是一次函数调用或者是一条语句。
F11逐语句就是每次都执行一条语句但是这个快捷键可以使我们的执行逻辑进入函数内部。在函数调用的地方想进入函数观察细节必须使用F11如果使用F10就会直接完成函数的调用。
CTRLF5开始执行不调试如果想让程序直接运行起来而不调试就可以直接使用。
条件断点在断点处右击鼠标设置断点的条件。 5、监视和内存观察
5.1、监视窗口
①打开监视窗口F10开始调试后才能使用监视窗口 5.2、内存窗口
打开内存窗口 这里列太长了不好观察可以将列设置为4跟方便观察。 在这里解释一下内存窗口 与以上相似的窗口还有很多如自动窗口自动帮长序员观察一些值但是用起来不够方便所以一般用的比较少、反汇编把语句转换成汇编代码、寄存器暂存数据。
6、调试举例1
求1 2 ... 10!
在这里我们先用3试一下值是否正确 这里的结果本应该是9但是实际编译器出现的是15实际的结果和预期是不相等的这就是Bug。
下面我们借助调试解决问题 经过调试后发现每次进行第二个for循环中ret的值都会保留上一次的值进行运算所以在进行第二个for循环之前应该加上一个ret 1才能解决这个问题。
解决完问题后我们来想一下
每次 这样会很占用空间而且过程也很麻烦。
我们下面来进行程序的优化 7、调试举例2
在VS2022、X86、Debug环境下 这里我们发现程序进入了死循环在这里我要解释一下
①i和arr是局部变量局部变量放在内存的栈区
②战区上的内存的使用习惯是先使用高地址的空间在使用低地址的空间
这里我们可以画一幅图更好的展示一下 i 和 arr 中间空多大空间完全是取决于编译器的实现在VS中刚好这里 i 和 arr 中间空了两个整型所以当 arr[12] 的值会替换 i 的值从而开始死循环。
不同的编译器中间的空隙不同如果在VC6.0中这个代码 arr 和 i 之间没有空隙如果在gcc中这个代码 arr 和 i 之间空一个整型。
8、调试举例3 注意在监视时观察自定义函数中的值时想观察一维数组前10个元素应该在监视窗口中输入arr3,10如果想观察二维数组则应输入arr4,3。
9、编程常见的错误归类
编程常见错误分为三种编译型错误、链接型错误、运行时错误。
9.1、编译型错误
编译型错误一般都是语法错误这类错误一般看错误信息就能找到一些蛛丝马迹的双击错误信息也能初步跳转到代码错误的地方或者附近。编译错误随着语言的熟练掌握会越来越少也容易解决。
9.2、链接型错误
编译器报错时会出现“无法解析的外部符号”如下 这里是由于未包含头文件stdio.h 也一样是链接型错误这里报错是因为函数Add未定义。
9.3、运行时错误
运行时错误需要借助调试逐步定位问题调试解决的是运行时问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/89300.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!