原创 程序调试(除错)过程中的一些雕虫小技(五、给程序安装个黑匣子)

2009-8-18 00:00 2608 7 10 分类: MCU/ 嵌入式

程序调试(除错)过程中的一些雕虫小技(五、给程序安装个黑匣子)


某年某月的某一天,一架飞机以优美的抛物线形状,一头栽到海里去了……几天后,人们找到了飞机的黑匣子,里面记录了飞行员的最后一句话:“天呐,我看到火星人了!……”


以上空难情节我们经常会通过新闻看到吧(当然,最后一句是匠人版的科幻情节)。看看,飞机的黑匣子可以记录并再现现场,多么神奇!欧耶!


我们在调试程序时,也可以借鉴这个方法,给程序按装一个黑匣子。程序中的黑匣子其实就是一个在内存中开辟的队列。队列的原理我们很清楚,先进先出,后进后出(与飞机黑匣子的特性相同)。


比如说吧,假设我们的系统在工作中,某个输入量的采样值经常受到不明原因的扰动。我们要摸清这种扰动的规律,以便对症下药。但是这种扰动稍纵即逝。


我们的困扰是:程序正常运行时看不出规律,单步走又难以捕捉扰动。怎么办?


有没有办法,把扰动记录下来?


当然可以。


我们可以利用系统里剩余的RAM,开辟一块单元,做成队列。并写段测试程序,定时把新采样值压入队列。


然后我们让程序运行,在需要的(任意)时刻,让程序停下来。这时,队列里记录的就是最新一批采样数据。


只要队列的深度足够大,我们就可以找出扰动的规律来。


——什么,你问我什么叫队列?
——匠人曰“天呐,我看到火星人了!……”


(未完待续……)

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

dwwzl 2009-8-22 12:23

还可以更好,可以利用flash rom记录,也可以利用内部eeprom记录,当程序跑飞或者异常故障时的状况,停机读取异常状态的

用户112477 2009-8-19 10:17

顶,学习了

用户518079 2009-8-18 14:31

好!强烈支持!

用户78669 2007-12-14 18:53

ding 谢谢分享
相关推荐阅读
程序匠人 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
7
关闭 站长推荐上一条 /3 下一条