你真的知道怎么使用vs吗?把把手教你实用调试小技巧

这篇具有很好参考价值的文章主要介绍了你真的知道怎么使用vs吗?把把手教你实用调试小技巧。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.什么是bug?

谈到bug,我们知道bug的中文意思是虫子,飞蛾的意思。至于为什么bug一词会用到计算机领域的话得追溯到第一台计算机的诞生。
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
上面个你看到的就是世界上第一个bug的诞生。它的来源也是非常的有意思,当时世界上的第一台计算机出了故障不能正常的工作,于是工作人员就进入计算机内部检查(当时的计算机非常的大,达到人可以进去),这个时候发现计算机的一个晶体管内有个飞蛾死在了里面于是把飞蛾清理干净,换了零件之后,计算机就可以正常的工作了。于是科学家们就把此次事件记录了下来,一直延伸到现在,我们就把计算机成程序出问题说成是bug。

2.调试是什么?有多重要?

调试(英语:Debugging / Debug),又称除错,是发现和减少计算机程序或电子仪器设备中程序
错误的一个过程。

简单点说调试就是一个发现错误,并且精准的找到错误地点,找到合理的解决方案的一个纠错过程。

在程序员界里有这样一句话:一个优秀的程序员同时也是一个优秀的侦探。

  • 调试的基本步骤:
    1.发现程序错误的存在
    2.以隔离、消除等方式对错误进行定位
    3.确定错误产生的原因
    4.提出纠正错误的解决办法
    5.对程序错误予以改正,重新测试

3.debug和release的介绍。

  • Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。
  • Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优 的,以便用户很好地使用。

当然两个版本还是有一些的不同之处的,就比如生成的可执行文件的大小是不一样的(.exe文件后缀名的文件);
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
我们先看Debug版本的:
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
再看Release版本的:
你真的知道怎么使用vs吗?把把手教你实用调试小技巧

  • 这样一对比就可以看出了Release版本的可执行文件的大小是比Debug版本的小的,这是因为Release版本是对代码做了一些优化的,而我们的Debug版本是没有做优化的,所以在Release版本下的文件所占内存大小是更小的。

  • 那问题来了,既然有两个版本我们应该选择哪个版本呢?
    首先我们知道这两个版本的区别就是一个做了优化一个没有做优化。
    那既然我们要检查我们编写的代码哪里出问题了,是不是应该我们写的什么代码就调试什么代码,也就是说没有做任何的优化效果,这样的话及时是一点小错误我们也可以即使的发现并作出及时的改进。所以我们调试首选的就是Debug版本的。

  • 相反的,如果我们调试用的是Release版本的话,我们知道Release版本是对我们写的代码进行了优化作用的,如果我们用这个版本进行调试的话,有些错误的代码时被优化过的,那就说明一些较小的错误是不能被发现的,那么日积月累把这些小错误累计起来就会出大错误的。这么讲的话那Release版本到底在什么时候用到呢。我们要知道一点的时我们编写出来的文件终归是要给客户使用的,既然时给别人用的我们就要保证我们编写的程序不能出现错误,这个时候Release版本就有用出来,当我们调试的时候一些小的错误没有及时的发现就直接给用户使用,这个时候我么Release版本就会帮我们优化代码弥补那些小错误,这个时候客户就能正常的时候了。

4.windows环境调试介绍。

4.1常见调试快捷键

使用一些常用调试快捷键: 快捷键作用
F5 启动调试,经常用来直接跳到下一个断点处。
F9 创建断点和取消断点断点的重要作用,可以在程序的任意位置设置断点。这样就可以使得程序在想要的位置随意停止执行,继而一步步执行下去。
F10 逐过程,通常用来处理一个过程,一个过程可以是一次函数调用,或者是一条语句。
F11 逐语句,就是每次都执行一条语句,但是这个快捷键可以使我们的执行逻辑进入函数内部(这是最长用的)。
CTRL+F5 开始执行不调试,如果你想让程序直接运行起来而不调试就可以直接使用。
  1. CTRL+F5 直接执行
    我们代码后,想要直接看到我们编写的结果,就用这个组合键,就能在终端看到我们的编写结果了。这个是可以跳过断点的。
  2. F10逐步调试
    万一我们代码编写的时候出现了错误,我们也很难看出哪里出错了,这个时候就需要对我们的代码逐行的进行检验,这个时候我们就可以按F10
  3. F5 时执行键
    这个一般和F9断点搭配的使用,当我们设置好了断点之后,只需要按F5便会跳到断点处。
  4. F9 设计断点
    但我们编写的代码又几百行甚至更多的时候,而我们又知道他在那个部分出错了,如果我们还按F10逐行的进行检验的话就会浪费大量的时间和精力,这个时候我们可以设计断点。设计断点的方法有两种:1.选中一行按F9 。2.用鼠标左键点击改行最左边。当我们设置好了断点之后再按F5就可以直接跳到我们的断点处了。
    你真的知道怎么使用vs吗?把把手教你实用调试小技巧

4.2 调试的时候查看程序当前信息

一般我们使用到的有:
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
注意这些都是在进行调试的时候才能使用的

4.2.1监视:

你真的知道怎么使用vs吗?把把手教你实用调试小技巧
这个监视窗口我们可以自主输入想要看到结果,在按F10的过程最左边有一个箭头,这个箭头就是我们执行到哪一行的标志。
同时除了手动的,还用自动的。
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
自动窗口会根据你调试到哪里自动生成可监视的变量,但是他的局限性就是不能一直监视,一点过来变量的作用域就不能在监视了。

4.2.2内存

监视内存的方法和上面是一样的:
你真的知道怎么使用vs吗?把把手教你实用调试小技巧

它可以显示处变量子内存的分布。

4.2.3调用堆栈

你真的知道怎么使用vs吗?把把手教你实用调试小技巧

4.2.4反汇编

调用堆栈的方法有两种:1.鼠标右键点击转到反汇编。2.窗口打开
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
你真的知道怎么使用vs吗?把把手教你实用调试小技巧

4.2.5寄存器

你真的知道怎么使用vs吗?把把手教你实用调试小技巧

5.一些调试的实例。

实例一:

#include <stdio.h>
int main()
{
    int i = 0;
    int arr[10] = {0};
    for(i=0; i<=12; i++)
   {
        arr[i] = 0;
        printf("hehe\n");
   }
    return 0;
}

按我们的分析,这是一个数组访问越界问题。
我们先看Debug版本的:
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
这里发现程序进入死循环了(这里提示以下要改成x86状态下才能看到死循环的效果,如果时x64的话就会直接报错)这是为什么呢?
这个时候我我们就要明白有关内存问题了:
我们的内存分为栈区,堆区,静态区(后面都会详细的讲解),而我们主函数调用时在栈区的。
栈区的特点是:1.先使用高地址的空间,在使用低地址的处的空间。2.先进的后出,后进的先出。
我们看一下他们的汇编:
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
这里我们可以看到i的内存和arr[12]的内存地址重合了,也就说明当我们遍历到arr[12]并把arr[12]初始化为0的时候使用过地址改变arr[12]的,恰好我们i的地址也是arr[12]的地址,所以i就别改成了0,所以一旦i遍历到12的时候就有被改成了0,所以i又再次遍历,一直这样重复所以就会死循环。

那我们再看一下Release版本的:
你真的知道怎么使用vs吗?把把手教你实用调试小技巧
会发现它就整整齐齐的打印了13个hehe,这就是Release版本的优化作用。

6.如何写出好(易于调试)的代码。

优秀的代码:

  1. 代码运行正常
  2. bug很少
  3. 效率高
  4. 可读性高
  5. 可维护性高
  6. 注释清晰
  7. 文档齐全

常见的coding技巧:

  1. 使用assert
  2. 尽量使用const30. 养成良好的编码风格
  3. 添加必要的注释
  4. 避免编码的陷阱。

注意:文章来源地址https://www.toymoban.com/news/detail-452056.html

  1. 分析参数的设计(命名,类型),返回值类型的设计
  2. 这里讲解野指针,空指针的危害。
  3. assert的使用,这里介绍assert的作用
  4. 参数部分 const 的使用,这里讲解const修饰指针的作用
  5. 注释的添加

7.编程常见的错误。

  1. 编译型错误
    直接看错误提示信息(双击),解决问题。或者凭借经验就可以搞定。相对来说简单。
  2. 链接型错误
    看错误提示信息,主要在代码中找到错误信息中的标识符,然后定位问题所在。一般是标识符名不
    存在或者拼写错误。
  3. 运行时错误
    借助调试,逐步定位问题。最难搞。

到了这里,关于你真的知道怎么使用vs吗?把把手教你实用调试小技巧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • VS实用调试技巧

    Bug一词的原意是虫子,而在电脑系统或程序中隐藏着的一些未被发现的 缺陷或问题 ,人们也叫它\\\"bug\\\"。这是为什么呢?这就要追溯到一个程序员与飞蛾的故事了。 Bug的创始人格蕾丝·赫柏(Grace Murray Hopper),是一位为美国海军工作的电脑专家,也是最早将人类语言融入到电

    2024年02月01日
    浏览(48)
  • Selenium | 你真的知道怎么提高Selenium的运行速度吗?

    对于网上流传的提高selenium的方法有很多,但从程序运行的感官上来看,感觉提速并不明显。所以,我特地做了一些测试,寻找最优方案。 但是,由于对不同组的测试次数并不相同,结果可能不太严谨。但是,一般来说,结果基本都在一定范围内浮动,所以结果和多次测试大

    2024年02月03日
    浏览(46)
  • [Selenium]你真的知道怎么提高Selenium的运行速度吗?

    对于网上流传的提高selenium的方法有很多,但从程序运行的感官上来看,感觉提速并不明显。所以,我特地做了一些测试,寻找最优方案。 但是,由于对不同组的测试次数并不相同,结果可能不太严谨。但是,一般来说,结果基本都在一定范围内浮动,所以结果和多次测试大

    2024年02月06日
    浏览(41)
  • 手把手教你创建VS离线安装包

    没有现成的iso 以前的VS一个ISO搞定安装 但现在VS都是在线安装模式了,有些工作机 处于无法联网状态,又需要安装VS时需要离线包 其实现在VS提供了离线安装包的命令行创建方式,下面以VS2019社区版为例,VS2022也是一样操作 下载VS Community 安装exe点击这里,假设放在D盘 打开

    2024年02月05日
    浏览(50)
  • 手把手的教你安装PyCharm --Pycharm安装详细教程(一)(非常详细,非常实用)

    Jetbrains家族和Pycharm版本划分: pycharm是Jetbrains家族中的一个明星产品,Jetbrains开发了许多好用的编辑器,包括Java编辑器(IntelliJ IDEA)、JavaScript编辑器(WebStorm)、PHP编辑器(PHPStorm)、Ruby编辑器(RubyMine)、C和C++编辑器(CLion)、.Net编辑器(Rider)、iOS/macOS编辑器(AppCode)

    2024年02月05日
    浏览(47)
  • 5G时代音视频开发前景怎么样?音视频开发需要掌握哪些技术?(1),手把手教你5G时代Webview的正确使用姿势

    你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你

    2024年04月11日
    浏览(59)
  • 手把手教你怎么写顺序表

    目录 一、顺序表有什么功能? 二、实现顺序表的各个功能 1.前置准备 2.初始化顺序表 3.顺序表扩容 4.打印顺序表 5.增加顺序表成员 5.1尾增 5.2头增  6.删除顺序表中成员的内容 6.1尾删 6.2头删  7.查找成员  8.修改(替换) 9.插入(在目标位置插入成员) 10.定向删除(将目标位置的成

    2024年02月15日
    浏览(66)
  • AI绘画怎么弄?手把手教你制作

    最近关于AI绘画的话题是非常火爆的,小伙伴们了解AI绘画吗?这是一种由我们输入关于画面的描述,然后由AI根据这些描述自动生成画面的技术。现在有很多软件都可以实现AI绘画的操作,那你们知道AI绘画特效软件哪个好吗?想要制作AI绘画的小伙伴,下面就为你们带

    2024年02月11日
    浏览(66)
  • 苹果手机怎么传输照片到电脑?教你4种实用方法

    苹果手机怎么传输照片到电脑 ?除了更换新手机需要迁移数据,iPhone用久了常常会遇到储存空间不足的问题,因此把一些数据上传到电脑上也是必要的。今天咱们就来说说从iPhone传输照片到电脑的迁移方法吧。 苹果手机怎么传输照片到电脑 ?使用苹果数据线连接手机设备与

    2024年02月05日
    浏览(76)
  • 路由器怎么知道是不是坏掉了?教你怎么看路由器坏没坏

    最近有好友“勇敢的心”问小编这样一个问题:怎么看路由器是不是坏了?好友反馈,最近在使用路由器无线上网,总是断线,电话咨询网络服务商,客服称线路并没有问题。那么我们怎么看是路由器坏了还是网络本身的问题呢?下面yii666小编教大家一招。 怎么看路由器是不

    2024年02月07日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包