原创 程序调试(除错)过程中的一些雕虫小技(七、向猎人学习挖坑设陷阱的技术)

2009-8-21 12:23 3011 9 12 分类: MCU/ 嵌入式

程序调试(除错)过程中的一些雕虫小技(七、向猎人学习挖坑设陷阱的技术)


上一回说到,在程序中设卡(断点),可以拦截流窜犯(程序流程错误)。实际上,断点的功能可强大了,不但可以拦截程序流程错误,也可以拦截数据错误。当然,这需要一些辅助手段。


还是以前面提到的一个例子来说。比如某个采样值(当然,也不一定是采样值,在这里也可以是RAM中任意单元中的值)受到未明因素影响,经常“乱跳”。这种数据出错的原因,可能如下:
1、计算错误(比如溢出),导致结果出错;
2、被其它程序段误改写;
3、其它原因……


当数据出错后,我们希望能够在最快时间内,让程序停下来,这样才能有效查出是哪一段程序出了问题。


有些调试环境本身可以捕捉数据错误,并产生断点中断。这当然最好不过。但是如果调试环境本身不提供这种捕捉功能,那么就需要我们自己来制造机关了。


看看猎人是是如何做的:他们会在猎物经过的地方,挖个坑,上面盖上浮土。当小型动物经过时,浮土不会塌陷。而当体重较大的动物经过时,它们的体重就会压垮浮土,掉进猎人的陷阱。


猎人的这个陷阱机关,妙就妙在是它“智能”的,会根据动物的体重进行筛选。


轻巧的小白兔来了——放过,笨重的大狗熊来了——捕获!欧耶!


好了,回到程序中来,假设我们要监控的那个RAM单元,正常值域为0~9;那么我们可以写一段测试代码,判断数值是否>9,根据判断结果执行两个分支,并在那条错误的分支路径上设置断点。


如果数据没有出错,程序会一直运行(小白兔请放心过去);直到数据错误发生,断点会自动停下来(大狗熊给我拿下)。


我们可以把这段测试程序,插入在“狗熊出没”的地方,“守株待兔”(其实“守坑待熊”)。


接下来的事情,就跟上回说的抓流窜犯原理差不多了。


——什么,你喜欢吃兔肉?不喜欢吃熊掌?
——你也太没有爱心了,唉。。。。。

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

程序匠人 2009-8-24 13:17

答复sxcem:因为这是网络连载。不是一天写成的。所以只好边写边发了。匠人不是故意为了灌水而灌水。

sxcem_562775947 2009-8-23 20:13

另外有个疑问 我怀疑评鉴兄弟文章为精华的是你家亲戚 虽然写的不错 但是内容较少 一篇文章分成七篇来写 有灌水嫌疑 纯属开玩笑 老兄水平不低 实践经验应相当丰富 谢谢分享

sxcem_562775947 2009-8-23 20:09

看过了 是个巧匠 支持一下 继续努力:)
相关推荐阅读
程序匠人 2011-08-19 16:42
串口调试利器——《串口猎人》V31 免费发布!
匠人按:《串口猎人》V31是继之前的V26、V29版本之后的最新升级版本。诸多细节改进不一一道来了。免费发布。 下载:串口猎人 ( Serial Hunter ) V31 setup.rar (2.7...
程序匠人 2011-06-24 11:25
匠人开发的一款串口调试工具——串口猎人 ( Serial Hunter ) V26
《串口猎人》十大功能简介: 1、基本功能,支持基本的 收、发、查看、保存、清除等功能。2、基本功能,自动/手动搜索串口,串口参数的设置和查看。3、基本功能,支持HEX/ASCII/中文汉字收发。4、高...
程序匠人 2010-07-10 20:49
招聘会花絮
招聘会花絮招聘会上常常会遇到一些让人啼笑皆非的趣闻和花絮:花絮1:应聘者:“偶是来应聘某某职位的,这是偶的简历。”匠人:“您好!请坐……”(一边接过简历一边随口问道)“哪年毕业的?”应聘者(脸不红心不...
程序匠人 2010-07-08 10:40
给我64只章鱼,我也可以通吃世界杯了
昨天谁赢了?西班牙?德国?——还是保罗?忘记那些足球专家和名宿们吧,甚至被认为是乌鸦嘴的贝利。他们的预测在章鱼保罗的面前,简直就是小儿科。经过90分钟的恶战,西班牙队1比0淘汰了章鱼保罗的祖国德国队。...
程序匠人 2010-06-28 14:11
周末,在佘山钓鱼(有图有真相)
昨天和木华去佘山钓鱼俺的个人战绩:钓出水面3条小鱼,收杆不及时脱钩1条,从水桶中又蹦出去1条……大家肯定很好奇,最后一条,匠人怎么处理的呀?呵呵 放生?or回家烧鱼汤? 鱼头烧汤鱼肚清蒸鱼尾红烧可怜,...
程序匠人 2010-05-05 20:02
通过两张趣图,看工程师的自我反省
很久没有关注其他网友的博客了,那天机缘巧合,看到两位网友分别转载的图片,很有意思。第一张图片来源国外,是一个关于程序员面试时的简历,被人事部门和程序员本身评审的角度不同的图片。当然,这是一个从国外面试...
EE直播间
更多
我要评论
3
9
关闭 站长推荐上一条 /3 下一条