debug的使用

往往我们在写代码的时候会发现那种很隐秘的bug,一直找找不多,甚至开始怀疑人生。目光扫描和人脑编译又耗时又耗精力又很容易中途乱了脑子,一切得重新来,所以我写了一篇博客来模拟一下检查bug时debug的过程,讲述一下对debug的一点了解和大概用法,求观摩的大神们多多批评,多多指点。


ps: 大家用的编译器不一定相同,debug的思想都相同,只是具体操作有略微区别,这里用Xcode编译器为大家演示。


这里我们假设有一道题目为:

输入n,然后输入n个数,输出这n个数的平方和。

范例输入:4 3 2 5 7

范例输出:87

背景:

我们有一段错误的代码:

具体操作:

  • 1、首先,在输入范例数据之前我们得在代码中加入断点。断点的意思大概就是程序运行到这一行暂停,等待你的手动步进才能读取这一行的代码,然后跳到下一行。一般我把断点加在输入语句的后方,这样可以直接直接输入数据,减少步进次数。

  • 2、然后编译运行代码,并输入范例数据。然后开始漫长的步进之旅(step in)。在IDE的上找到步进键,然后往下一直步进,并时刻关注数据的变化,debug的关键就在于观察数据到变化是不是如你预期地进行,如果不是,从哪里开始偏离预期,哪里的代码就错了。

debug过程截图:

接下来步进到输入行,程序将停下来等待你的输入数据

输入循环完成后进入运算循环

num从a数组中取得第一个值3

我们本想让num进行平方计算,去发现值为6,而不是我们想要的9,说明现在绿色的这行代码有问题,仔细看看发现我把乘号输成了加号,于是我就发现了bug病修改它,然后重新运行

修改后重新来到这一步

这次num平方后的值对了

这里再演示一层循环

剩下的就省略掉了

完美!!最后输出答案

变量框中如果有数组,你可以展开看所有的数组元素值


实际大家遇到的bug一定比这道题难找得多,非常隐秘,用这个方法可以更高效更方便地找到bug,大家动手去试试,说不定可以为以后节省很多时间、精力。

还有就是在运行过程中手动输出一些变量,也可以很方便地观察整个代码的运行,有时候比debug好用,因为一直按步进键非常慢,如果循环是上千上万次的就GG了。这个方法在我写 calculator plus 的过程中起到了很大的作用,有兴趣的可以看下,我没删掉,而是注释掉了。(求大神们指点指点、分享更好的方法)

debug的粗略使用(求大神们补充、指教,小渣马上改)的更多相关文章

  1. 刚开始学HTML自己做的,求大神些多多指教。

    !DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> ...

  2. 自己封装了一个EF的上下文类.,分享一下,顺便求大神指点

    using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...

  3. [LeetCode]LRU Cache有个问题,求大神解答【已解决】

    题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...

  4. 刚下了VS2010不会用,求大神指点迷津

    刚下了VS2010不会用,求大神指点迷津 [菌菌][C语言MOOC]第七周计算分数精确值(10分) thinkphp3.1Calltoamemberfunctionget()onnull java提示 ...

  5. python 抓取搜狗微信出现的问题,求大神解决

    爬取到的data不是想要获取文章页面的源码,而是跳转到验证码的页面的源码.我网上查了一下是由于访问过于频繁导致的,我也加了time.sleep和改了请求头但还是显示不了,求大神支招,除了识别验证码的方 ...

  6. 真想用c#开发个 wp五笔输入法。。。奈何网上资料太少,源码都是c++写的。求大神指点!!!

    真想用c#开发个 wp五笔输入法...奈何网上资料太少,源码都是c++写的.求大神指点!!!!

  7. c# winfrom 页面的enter变为tab 功能使用 在特定的按钮里面如何继续当enter使用求大神帮忙解答一下 !!急

    enter 当tab  键用 已经实现  :例如按回车的时候切换一直走 ,走到一个按钮如何让回车键在这个按钮的时候还是执行enter按钮的功能而不是tab   求大神解答一下, 目前页面tab功能改为 ...

  8. iis频繁奔溃,求大神帮忙分析dump

    直接上图了 上图三个错误最近频繁出现,出现一次iis就奔溃一次,抓取的dump分析后如下: Couldn't resolve error at 'ls' :> !analyze -v ***** ...

  9. 读FCL源码系列之List<T>---让你知其所以然---内含疑问求大神指点

    序言 在.NET开发中,List<T>是我们经常用到的类型.前段时间看到其他部门小伙伴讨论“两个List(10W个元素)集合求并集,list1.Where(p=>list2.Cont ...

随机推荐

  1. Linux进程管理 简介

    何为进程,我想这个问题大家再熟悉不过了吧,无非就是"执行中的程序"! 概念性的东西本文暂时忽略或者略微一提,详细信息还需要阅读相应的blog或专业书籍.(博主收藏了计算机相关的大量 ...

  2. [转]Mongodb的下载和安装

    本文转自:https://www.cnblogs.com/htyj/p/8260602.html 下载 下载地址:http://dl.mongodb.org/dl/win32/x86_64  说明:z ...

  3. mongodb int型id 自增

    mongo的c#客户端提供了接口IIdGenerator,有guid和objectid等几种实现,但没有int型id的实现 接口主要2个方法,一个IsEmpty返回bool,判断当前id值是否是空(估 ...

  4. 使用 NodeJS+Express+MySQL 实现简单的增删改查

    关于node.js暂时记录如下,以后有时间一定学习 文章来自简书,作者:sprint,2016-07 使用 Node.js + Express+MySQL 实现简单的增删改查 https://www. ...

  5. Oracle官网下载参考文档

    最近有人问我有没有Oracle11g数据库官方参考文档,我就想,这不是在官网可以下载到的吗,疑惑,问了之后才知道,他官网找过,但时没有找到.不要笑,其实有很多人一样是找不到的,下面就一步一步操作下: ...

  6. SQL Server拾遗

    1.判断数据库中是否存在一个表 if exists( select * from sysobjects where id=OBJECT_ID(N'[dbo].[Users]') ) drop tabl ...

  7. iOS 交互h5 - WKWebView

    众所周知,UIWebView存在内存问题,也就是当加载一个UIWebView时,内存会一直上升趋势无法得到释放.这样在使用UIWebView进行h5交互开发时会有很大的问题. 因而苹果增加了一个新的类 ...

  8. MySQL · 关系模型的基本术语

    关系:整个二维表 关系名:表格名称 元组:行数据(记录) 属性:列数据(字段/分量) 属性名:列名称(字段名) 主键:唯一确定元组的属性组(关键字) 域:属性的取值范围 关系模式:关系的描述,表示为: ...

  9. mysql索引类型normal,unique,full text的区别

    normal:表示普通索引 unique:表示唯一的,不允许重复的索引,如果该字段信息保证不会重复例如身份证号用作索引时,可设置为unique full textl: 表示 全文搜索的索引. FULL ...

  10. align-items (适用于父类容器上)

    align-items (适用于父类容器上) 设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式. 语法 align-items: flex-start | flex-end | center | ...