当前位置: 首页 > news >正文

网站服务器不稳定樟木头网站建设

网站服务器不稳定,樟木头网站建设,seo挂机赚钱,网站建设经济效益C语言(长期更新) 第7讲 VS实用调试技巧 跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学习内容,你的支持就是博主最大的动力。 目录 C语言(长期更新) 第7讲 …

C语言(长期更新)

第7讲

VS实用调试技巧

    跟着潼心走,轻松拿捏C语言,困惑通通走,一去不回头~欢迎开始今天的学习内容,你的支持就是博主最大的动力


目录

C语言(长期更新)

第7讲

VS实用调试技巧

知识回顾

 前言

7.1 Bug

7.2 调试

7.3 F5和F9

7.4release和debug

7.5 几个常用快捷键及功能

7.6 调试案例1

7.7调试案例2

7.8 编程常见错误归类


知识回顾

今天我们来学习一些VS实用的调试技巧的内容,坐稳了,我们发车,gogogo!


 前言

在写代码的过程中,我们常常可能出现各种各样的错误和问题。今天我们就讲一些关于这些的内容

7.1 Bug

很多年以前,在一次大型计算机整机运行时设备突然停止了运转,研究人员爬上去发现有一只飞蛾,在一组寄存器之间的触点上引发了高压触电,被电死了。这才引发了故障。电脑专家格蕾丝·赫柏(Grace Murrey Hopper)将这只虫子夹进了工作日志中,并以Bug(虫子的英文名)命名这次故障。这也就有了我们后来说的这里有Bug存在(在电脑程序中隐藏的、未被发现的,问题,漏洞

7.2 调试

我们在先前的学习中,有时会用F10进行调试,对学习的内容做一个辅助说明。在实际写代码的过程中,我们使用调试也可以找到报错,出bug的原因。

按下F10开始调试后,我们打开监视的窗口,添加要监视的变量,就可以进行bug的查找。


可以打开多个悬停监视窗口

 F11可以进入函数内部

7.3 F5和F9

在使用VS的过程中,我们会用到几个快捷键

下面我们就来详细介绍一下

  • F5 开始调试
  • Ctrl+F5 开始执行不调试

这俩有啥区别呢

这就涉及到另一个F9 断点

断点F9经常会与F5开始调试配合使用,其作用是在调试的过程中暂停在某一步

原本按F5,程序的调试会直接进行,不会中断。这个过程极为迅速,不利于观察

添加断点,再运行F5时,就会在断点处中断,方便我们检查某一可能出现问他的地方

再次按下F5,箭头(代表调试进程)会跳到下一个断点

可以看到,按下F9添加断点后,再次按下F5,这次就没有直接全部执行完,而是左端的箭头停在了第一个断点的位置。

再次按下F5,我们会发现,它依旧停在了第11行的位置

奇了怪了,不是说会停在下一个断点的位置吗?

这里的下一个断点指的是执行逻辑上的下一个断点。由于循环的存在,需要按10次F5才能调到第13行的断点。

结合具体的例子,我们大致明白了F5和F9是如何配合使用的了。这也就是F5和Ctrl+F5的区别所在。Ctrl+F5是执行不调试,自然也就不会有断点这一说。

7.4release和debug

我们注意到,在上面VS界面的截图中,有Debug和Release两个选项

我们在运行代码后就会在代码保存的位置发现一个叫Debug的文件夹

与之对应,选择Release就会在同样位置出现叫Release的文件夹

它们的区别在哪里捏?

1.Debug

Debug是可调试的,方便程序员修改、调试代码,是未经优化的。

debug在英文中的意思是消除bug,de这个前缀有delete删去的含义。

2.Release

Release是供用户使用,为保障运行速度,经过优化后的版本,不可调试

我们的测试人员就会针对这个版本进行测试,提升用户体验。

如果我们分别生成两个文件就会发现Debug文件夹的大小要不Release要大,这就是包含调试信息的缘故。

7.5 几个常用快捷键及功能

VS快捷键使用技巧(超全)_vs自动缩进快捷键 csdn-CSDN博客

内存也是很常见的

7.6 调试案例1

逻辑漏洞出现在哪里呢?

通过调试我们发现,由于j在每次内循环时没有复位(即每次开始循环是并不都是从1开始,先前的值依旧在j中存储),导致出现了BUG

如果我们不能直接发现这个隐藏的逻辑漏洞,调试就可以帮助我们更加迅速的找到问题所在、

在写代码的过程中我们一定要注意

1.保持头脑的清醒
2.你要知道你的想要什么效果
3.在调试的过程中,观察代码是不是按照你的需要(想法)在执行。
4.如果你发现代码并没有按照你的想法在走,这里就是bug了

除此之外,我们上面的代码还可以进行优化

既然每次阶乘前面都是一样的,也就是说j不用每次从1开始加,在先前基础上再乘以n就行啦

7.7调试案例2

与环境相关的bug

我们会发现在VS2022 Debug x86的环境配置下,会无限循环打印hehe

我们能判断到可能的错误是

非法访问内存导致的越界

我们通过调试可以发现

在监视窗口中arr[12]的值竟和 i 的值同步变化,而我们输入地址发现两者地址竟也相同。

这是怎么回事捏?

我们知道内存分为栈区,堆区,静态区

arr[10]和 i 都是局部变量,局部变储存在栈区中

内存的存储一般是由高地址到低地址的

然而数组中元素的存放却是从低到高按顺序存放的

在VS2022 Debug x86 的运行环境下,i和arr[9]的距离只有2个整型的空间,所以当arr[12]要按顺序存放时恰好占据了i的位置,因此当它置为0时,i也随之变为0了,这就造成了死循环

调试过程中,要做到心中有数,也就是程序员自己心里要清晰的知道希望代码怎么执行,然后再去看代码有没有按照我们预定的路线在执行。


调试是需要反复去动手练习的,调试是可以增加程序员对代码的理解和掌控的,掌握了调试的能力,就能看到本质,就像能给程序做B超一样,对程序内部一览无余。


程序员的三种境界:
1.看代码就是代码    一字母,函数,
2.看代码不是代码    一内存,逻辑,本质     调试是必须掌握的(必要条件)
3.看代码还是代码

7.8 编程常见错误归类

  1. 编译错误——语法错误
  2. 链接错误——无法解析的外部符号LNK
  3. 运行错误——语法正确,可运行,但存在bug——调试解决

    好了今天的学习内容就到这里啦,谢谢你的陪伴,我是潼心,下次再见~如果这篇文章对你有帮助的话。请务必给主播一个一键三连,球球了,这对主播很重要~

http://www.dtcms.com/a/450318.html

相关文章:

  • 建设网站都需投入哪些资源wordpress没有图片
  • 网站主栏目投资网站排行
  • 国内永久crmseo刷关键词排名免费
  • 爬虫的道德与法律边界:Robots 协议、版权与个人信息保护
  • @[TOC](文件操作和IO)
  • 打开网站不要出现 index.html携程网站联盟
  • 律师行业协会网站建设做简历的网站叫什么
  • c++ enum和enum class
  • 罗湖网站制作多少钱南京企业网站
  • 【论文阅读】通义实验室,VACE: All-in-One Video Creation and Editing
  • 2025年--Lc165--H637.二叉树的层平均值(二叉树的层序遍历)--Java版
  • 消息顺序消费问题
  • 网站实名制查询唐山网站设计制作
  • 怎么给网站加速长沙房价2020最新价格
  • LeetCode:99.下一个排列
  • 三合一网站源码网站开发后期工作包括那两个部分
  • C49-函数指针(通过指针调用函数)
  • *多棱镜/三极管——AI工具对话本质探讨(智普清言)
  • 外贸网站建设是什么意思磨床 东莞网站建设
  • 个人电子商务网站 制作营销型网站建设营销型网站建设
  • 查找企业资料的网站vue消息推送和系统通知
  • SVG Stroke 属性详解
  • 链接点开网页表白的网站怎么做的网站策划的步骤
  • CTFHub SQL注入通关笔记1:整数型注入(手注法+脚本法)
  • Scade One 图形建模 - 时序算符模型
  • phpcms手机网站营销型企业网站建设哪家好
  • 产地证在什么网站做网络设计什么学历一般
  • 网站入口百度WordPress即时群聊
  • registrate的深入研究
  • MySql速成笔记4(约束)