2015年初的调试经验总结

恒宝的Debug小经验
 

编程是一件幸福的事情,可以看到自己预想的功能一个又一个的实现,体会如领导或者魔法般的快感。但是调试却总能让我们陷入深深的自责、沉思和烦恼中,有的时候小的问题也有可能让我们变得无所适从,陷入崩溃。不扯了,上点我在调试中的经验干货。

1.你很可能“拼写错误”

嘿嘿,有的小盆友可能看到这个马上就要关我的日志了,心里肯定想“怎么把这种编译器都能查出的东西放在第一个?没水准!”。我这里的这个拼写错误并不是环境能自动查出的对象名称或者关键字有误,而是你自己定义了多个类型相同而且名称相似的对象后,在使用时用错了。这种情况,在有拼写提示的环境里更容易发生,而且很难察觉。

怎么解决这种问题呢?当然在敲得时候注意一下检查是最好的了,源头上便可以解决。如果在调试时出现诸如:属性怪异、数组长度怪异、异常报出的行数外层有其它关键对象时可以通过逐一排除的方式进行盘查,便有可能解决这种问题,当然,如果“罪孽深重”,损害了一些玩意儿的利益,谁也救不了了。

2.异常不仅要大胆捕获还要大胆跟进

在C++程序调试时很容易出现程序无法进行下去的异常,一定要跟进底层去看堆栈的异常,这样即便你不了解底层的机理也可以多为你提供一些问题的特征。另外,try catch 语句块的滥用是对程序的不负责任。异常的抛出必须是上一层可以解决,否则危害整体。

3.你需要手写“关联清单”

当我们的异常信息为我们指出我们的错误,却又让我们感觉出错的地方不明确的时候,你需要手写出所有涉及的对象、数组。这可不是犯傻,而是为了头脑清晰,很多情况下监控的“对象们”并不一定是出错的地方,但是通过你冷静地一遍书写之后,很可能灵光一现,觉察到可能关联慎密的其它变量。

4.一图胜千言,一表永流传

画图解决问题是我在学习链表时获得的经验,很多情况下,越是复杂、特别的结构越是要自己动手画一画来思考问题出现在什么地方。另外,在画图的过程中你还很可能想到完善这个结构的方案,因为你面对的不是冷冰冰的代码而是活灵活现的图纸。

表格是我们解决问题的又一利器,小伙伴们知道在我们的VS2010中调试的时候总会出现各种变量的动态,这往往让我们非常愉快。但是有的时候我们却要自己画一画小表格,当然不是做这种监视的工作,而是帮助我们分析多属性多功能的对象,我们可以通过类似UML的书写对该对象逐一排除不需要进行“升级”的地方。

5.要坚持不懈,死磕到底。更要善于交流,发散思维。

很多同志都有这样的经验“对待bug一定要严惩而后快,绝不姑息!”这当然是非常对的,这有助于我们的程序越来越好。但是我们解决这种入世的事要有一颗出世的心呀,我们很容易在急躁的时候陷入某一种解决方案里,而且这种解决方案往往是那种初期略见成效,而后愈发捉襟见肘的类型。所以当我们出现一个问题时,先不要急着大动干戈,尝试着听听各路英雄的见解,在一种方法尝试有很大失败之可能就启动另一方案,押宝的行为很不可取。

好了,以上就是恒宝在敲代码过程中得到的小经验,当然,代码在继续,我的生活也在继续,希望在今后可以积累更多的经验分享给大家。也希望小伙伴们多多提出意见和建议,更多滴和我交流Debug中的那些奥秘。

你可能感兴趣的:(调试)