debug的粗略使用(求大神们补充、指教,小渣马上改)
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的粗略使用(求大神们补充、指教,小渣马上改)的更多相关文章
- 刚开始学HTML自己做的,求大神些多多指教。
!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> ...
- 自己封装了一个EF的上下文类.,分享一下,顺便求大神指点
using System; using System.Collections.Generic; using System.Configuration; using System.Data; using ...
- [LeetCode]LRU Cache有个问题,求大神解答【已解决】
题目: Design and implement a data structure for Least Recently Used (LRU) cache. It should support the ...
- 刚下了VS2010不会用,求大神指点迷津
刚下了VS2010不会用,求大神指点迷津 [菌菌][C语言MOOC]第七周计算分数精确值(10分) thinkphp3.1Calltoamemberfunctionget()onnull java提示 ...
- python 抓取搜狗微信出现的问题,求大神解决
爬取到的data不是想要获取文章页面的源码,而是跳转到验证码的页面的源码.我网上查了一下是由于访问过于频繁导致的,我也加了time.sleep和改了请求头但还是显示不了,求大神支招,除了识别验证码的方 ...
- 真想用c#开发个 wp五笔输入法。。。奈何网上资料太少,源码都是c++写的。求大神指点!!!
真想用c#开发个 wp五笔输入法...奈何网上资料太少,源码都是c++写的.求大神指点!!!!
- c# winfrom 页面的enter变为tab 功能使用 在特定的按钮里面如何继续当enter使用求大神帮忙解答一下 !!急
enter 当tab 键用 已经实现 :例如按回车的时候切换一直走 ,走到一个按钮如何让回车键在这个按钮的时候还是执行enter按钮的功能而不是tab 求大神解答一下, 目前页面tab功能改为 ...
- iis频繁奔溃,求大神帮忙分析dump
直接上图了 上图三个错误最近频繁出现,出现一次iis就奔溃一次,抓取的dump分析后如下: Couldn't resolve error at 'ls' :> !analyze -v ***** ...
- 读FCL源码系列之List<T>---让你知其所以然---内含疑问求大神指点
序言 在.NET开发中,List<T>是我们经常用到的类型.前段时间看到其他部门小伙伴讨论“两个List(10W个元素)集合求并集,list1.Where(p=>list2.Cont ...
随机推荐
- 【转】CSS浮动(float,clear)通俗讲解
作者:杨元 本文链接:http://www.cnblogs.com/iyangyuan/archive/2013/03/27/2983813.html 很早以前就接触过CSS,但对于浮动始终非常迷惑, ...
- EventProxy流程控制
EventProxy流程控制 EventProxy是一个通过控制事件触发顺序来控制业务流程的工具. 1. 利用事件机制解耦复杂业务逻辑2. 移除被广为诟病的深度callback嵌套问题3. 将串行等待 ...
- PHP · MySQL函数
连接名=mysql_connect("主机","用户名","密码"); 连接名=mysql_qconnect("主机", ...
- MySQL3:存储过程和函数
什么是存储过程 简单说,存储过程就是一条或多条SQL语句的集合,可视为批文件,但是起作用不仅限于批处理.本文主要讲解如何创建存储过程和存储函数以及变量的使用,如何调用.查看.修改.删除存储过程和存储函 ...
- IDEA 导出maven项目所有的依赖包到指定的目录
问题产生: 需要把一个maven工程调整结构,部署到一个新环境中,需要把依赖的jar包,单独打到一个目录中. 解决方案: 需要两步便可以copy到指定的目录中. 第一步: 找到maven projec ...
- javaweb中如何给自己的网站更改ico图标
我们在查看网页的时候很多网站都有自己的小图标,系统读取这个标志的时候先从你的项目的根目录下读看有没有favicon.ico文件,如果有直接显示这个图标,如果没有,则会去webapps/root/下找这 ...
- Eclipse发布的Dynamical web项目在Tomacat文件夹下显示
Eclipse设置了Tomacat后,项目信息会在你的workspace上,在Tomacat文件夹上是没有的.但是通过设置是可以在Tomacat文件夹上存在的. 配置好服务器后,先关闭服务器,然后在E ...
- Zookeeper学习文章目录1
目录:参考文章如下 1.ZooKeeper学习第一期---Zookeeper简单介绍 2. ZooKeeper学习第二期--ZooKeeper安装配置 3. ZooKeeper学习第三期---Zook ...
- try,except用法
lst = ["皇阿玛", "皇额娘", "容嬷嬷", "紫薇"] # 模拟for循环 it = lst.__iter_ ...
- js-权威指南学习笔记3
第四章 表达式和运算符 1.最简单的表达式是原始表达式,是表达式的最小单位——它们不再包含其他表达式.JS中原始表达式包含常量或直接量.关键字和变量. 2.一个对象的属性名不是固定值时,必须使用方括号 ...