谈谈如何调试程序BUG (vs2012 cocos2dx)

这几天被程序的一个BUG搞得简直疯狂,我来大致描述一下这个BUG:

自己的回合先把卡牌拖到中间位置:,然后结束回合

下一回合将卡牌拖到前一个位置:,然后结束回合,第一张卡牌竟然就消失了!!但是对面的卡牌依然能被攻击,这说明这张卡牌在数据上是存在的!!只是图片,还有它的攻击特效全都消失了!!

我当时考虑的是不是被其他东西覆盖了,但是设置了ZOrder依旧没有解决问题...然后发现能覆盖它的只有背景,就干脆把背景去掉,但是图片还是会消失...

问题是只有这样图片才会消失,其他拖动顺序都不会消失,我用了各种方法:设置断点、输出......

结局就是开始怀疑是不是cocos自己的问题

在一次偶然的尝试下,我发现了BUG竟然在一个自认为对图片没有影响的地方。修改好逻辑后问题就解决了,所以决定将自己的调试经验写下来。

一:学会输出

2dx提供了一个输出的方法,CCLOG(msg);,另外vs2012也有自己的输出方法,Debug.WriteLine(msg);

这是一个非常重要的功能,如果在程序的一些重要的步骤里加入输出,那么在操作程序的时候vs会不断输出你要的结果,可以定位程序执行到哪里,当然也能定位是哪里出错。

二:学会设置断点

如果程序比较简单,可以不输出直接设置断点,然后一步步执行,但是如果程序量很大,那么直接设置断点就不明智了。

我认为应该先用输出的方法定位程序出错的位置,然后再在此处设置一个断点,经行一步步的测试,找出错误。

三:学会注释

对于一些特殊情况,可能断点或者输出也无法找到出错的位置,那么现在可以选择用一些手动的方法。

注释是一个比较考验经验的方法,首先要对自己写的程序非常了解才行,

比如有两个先后执行的函数或者步骤,我们先把一个注释掉(前提是注释了它程序还是可以正常执行),如果问题依旧存在那么注释另一个地方,如果问题不存在了那就说明问题出在了注释的区域内。我上面的问题就是用这种方法解决的。

四:其他

建议在写一个比较完整项目的时候写一个进度文档,将自己完成的程序模块名字按照顺序写在文档里,那么程序一旦出现问题就可以从下到上查找,一般能很快找到问题所在。这次正好偷了懒,新写的几个模块没有写到文档里,大大降低了寻找BUG的速度。

每种方法都有自己的优缺点,至于怎么去选择,这需要我们在实际项目中积累经验。

另外程序的BUG原因五花八门,让人头疼的是它经常会出现在各种不经意的地方,所以我建议查找BUG的时候要像个有头脑的“电脑”一样,除非显而易见正确的,我们都不要轻易跳过自认为正确的地方。

好了,以上就是这次惨痛经历的总结。。

时间: 2024-10-12 02:33:09

谈谈如何调试程序BUG (vs2012 cocos2dx)的相关文章

学会如何调试程序bug

前言:---------- >学会如何调试程序bug<---------- 1.在开发中如何调试程序 ------------------(请看==>步骤一 至步骤 五) 2.使用过哪些调试工具 ---------------------腾讯的 bugly 3.程序上线后,如何收集错误信息---------(请看==>步骤 六) 4.bugly演示 --------------------------------- (请看==>步骤 六) 5.NSLog进行调试 ------

WIN7+VS2012+COCOS2D-X 3.7创建的项目移植到iphone IOS步骤

1.先搭建好WIN7+VS2012+COCOS2D-X 3.6的环境,并且开发一个项目,编译运行成功. 2.启动MAC机器,进http://www.cocos.com/download/ 下载cocos3.7源码,然后放置在一个目录下. 3.进入到cocos的目录,执行如下命令(举例,根据需要修改): cocos new DemoGame -p com.MyCompany.DemoGame -l cpp -d ~/MyCompany Runing command: new > Copy temp

win7(x64)+VS2012+cocos2d-x环境的配置以及试运行

原地址:http://blog.csdn.net/gf771115/article/details/20740993 转自:http://blog.sina.com.cn/s/blog_62df69790101eob1.html Windows7 64位系统搭建Cocos2d-x-2.2.1最新版以及Android交叉编译环境(详细教程) 声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级后的cocos2d-x有了一些变化,目前的博文还没有关于Cocos2d

Win8傻瓜版 VS2012+Cocos2d-x 3.6 安装教程

今天自己安装了一下cocos2d-x 3.6 版本的,看教程忙乎了一下午,于是我决定我要写一个傻瓜版的,一看就会的. 1.安装Microsoft Visual Studio 2012 自己就去网上找吧,一大堆,密钥问度娘. 2.安装及配置python 2.x 这里注意,一定要下载python 3.0以下的版本.安装的时候一路回车即可. 配置:进行环境变量配置,在我的电脑(右键)->属性->高级系统设置->高级选项卡->环境变量->系统变量 中找到Path 变量,并在其值中增加

cocos2d-x 3.2 之 别踩白块(第一篇)

***************************************转载请注明出处:http://blog.csdn.net/lttree****************************************** 前言: 快过年了,事也不少,只能找一些简单的忙活下啦, 这游戏不知道还有没有人记得= =. 开发环境 -- VS2012 + cocos2d-x 3.2 正文: 闲话不多说,现在开始做我们的 别踩白块. 与之前的相比,这次的游戏会简单许多, 首先新建一个项目,然后修

cocos2dx游戏开发总结

前段时间看了传智播客两节2048手游公开课,两节课虽说大概两个多小时,但是讲的其实不多最后因为断网,讲师也没有继续给出视频了.正好此时开发之旅也完结了,所以自己就慢慢实现了. 开发工具vs2012+cocos2dx 2.2+eclipse: 效果: 主菜单界面 帮助界面 游戏界面 总结: 主要还是移植比较麻烦,网速不行下载adt更新花了一天:移植后出现屏幕适应问题,解决方案写在了这篇文章: <Cocos2dx屏幕匹配>(综合各家之言,通过了实践检验之). 收获嘛,掌握对win32到Androi

cocos2d-x 3.2 之 2048 —— 第一篇

***************************************转载请注明出处:http://blog.csdn.net/lttree****************************************** 2048这款游戏,已经有一段时间了,之前一直想做一款. 可是.cocos2d-x 引擎 正在学习,并有别的事情忙.一直延到如今. 好吧.最终要做一下了~. ~ 这是第一篇,主要会说明一下: --屏幕适配 --主界面 布局及设计 在前言 中.已经展示过我做的2048,

cocos2dx 3.3将坐标由父空间转化到局部空间

设在node的父空间内有一点p,要求其转化到node局部空间后的坐标p_local,代码如下: node->getNodeToParentTransform();//in order node->parentToNodeTransform() got right result, we must call node->getNodeToParentTransform() first, this is a bug of cocos2dx 3.3, see:http://www.cnblogs

【转】MUD教程--巫师入门教程4

我们再次复习一下clean_up()函数返回1的含义,如果clean_up()函数返回1,则MUDOS在这一次的调用时不会做其的任何举动,但到了下一次想调用的时间里,还将再次调用这个对象的clean_up()函数.那么从这可以看出,有以下四种情况不会将其清除出内存:一.非clone出来并且有no_clean_up参数的对象:二.玩家永远不会三.处于一个还存在的环境里四.自己里面存在着玩家 也就是MUDOS定时摧毁内存不需要的对象是由外向内的,比如一个房间,系统只要检查这个房间里没有no_clea