VS实用调试技巧

1. 什么是Bug

        Bug的本意是虫子,但是在计算机领域中指的是计算机程序中出现错误。

        Bug一词的由来是一个很有意思的小故事:

        1945年9月9日,下午三点,哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。这还不是一个完全的电子计算机,它使用了大量的继电器,一种电子机械装置。二战还没有结束,哈珀的小组日以继夜地工作,机房是一间第一次世界大战时建造的老建筑。那是一个炎热的夏天,房间没有空调,所有窗户都敞开散热。

        突然,马克二型死机了。技术人员试了很多办法,最后定位到第70号继电器出错。哈珀观察这个出错的继电器,发现一只飞蛾躺在中间,已经被继电器打死。她小心地用摄子将蛾子夹出来,用透明胶布帖到“事件记录本”中,并注明“第一个发现虫子的实例。”

        从此以后,人们将计算机错误戏称为虫子(bug),而把找寻错误的工作称为(debug)

2.什么是调试(debug)

        调试就是把错误bug消灭的操作,当然当程序出现bug时我们要狠心的承认自己的编写的程序是不完美的,然后潜下心来找到问题所在,将它完善。

3. debug 和 release

        debug(调试版本)编译出来的可执行程序是可以调试的,debug版本编译出来的可执行程序是不做任何优化的。

        release(发布版本)直接交付给用户的版本,release版本编译出来的可执行程序在代码大小和运行速度上都是最优的。

        

        可以看出,debug版本的可执行文件和release版本的差距还是蛮大的,这就是因为debug版本中还有比release多包含了调试的一些信息还有就是优化方面的东西。

        

        4. VS调试快捷键

        F9 创建断点和取消断点

        断点就是程序在执行的到断点的时候暂停

        F5 启动调试

        直接跳到下一个断点处,用来在调试的时候跳过那些已经确定没有问题的程序用

        F10 逐过程

        用来处理一个过程,可以是一个语句也可以是一个函数

        F11 逐语句

        一个语句一个语句的处理,不会跳过函数

        CTRL+F5 开始执行不调试

        F9+F5调试实例:

        我希望这个代码运行到 i==5 时暂停,所以要在循环中打上一个断点,单击41行再按F9前面出现一个红点,说明断点已经打上了,再右击红点选择条件

        在对应的位置输入断点出现的条件,然后F5执行一下看看

        F5直接跳到下一个断点处,这样就在 i==5 时在这个点断开了,下一步就是打印 5 了

5. 监视和内存观察

        监视和内存的观察都要在调试过程中执行

        这样一段代码,我还是将断点打在了 i==5 的位置,下面F5直接跳到断点位置,观察arr数组,num 和 ch

        

        按以上步骤找到监视,监视窗口任意选一个就行,都是一样的

        出现监视窗口后我们输入需要观察的对象,就可以看到它们的内容了,数组后半程因为没有定义,所以是以随机数状态存在的,看起来是一堆乱码。

        

        再按以上步骤找到内存窗口

        在地址栏中输入地址敲回车,可以看到在内存中的状态

        我们以字符变量ch为例讲解一下,内存中窗口中这3个模块都是什么含义

        第一个模块是变量内存红的地址,这个很好理解

        第二个模块是变量在内存中的存储内容,但是是以16进制的形式表示出来了,我们不要搞混淆,任何数据在内存中的存储都是以2进制存在的。1个十六进制位对应4个二进制位,2个十六进制位就对应了一个字节,这一点我们可以用计算器验证。

        第三个模块表示这个地址下可能存储的文本,完全可以忽略掉第三给模块,没有什么意义的。

        二维数组查看方式于一维数组不同,要写成 arr,行数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值