"); //-->
程序调试(除错)过程中的一些雕虫小技(五、给程序安装个黑匣子)
某年某月的某一天,一架飞机以优美的抛物线形状,一头栽到海里去了……几天后,人们找到了飞机的黑匣子,里面记录了飞行员的最后一句话:“天呐,我看到火星人了!……”
以上空难情节我们经常会通过新闻看到吧(当然,最后一句是匠人版的科幻情节)。看看,飞机的黑匣子可以记录并再现现场,多么神奇!欧耶!
我们在调试程序时,也可以借鉴这个方法,给程序按装一个黑匣子。程序中的黑匣子其实就是一个在内存中开辟的队列。队列的原理我们很清楚,先进先出,后进后出(与飞机黑匣子的特性相同)。
比如说吧,假设我们的系统在工作中,某个输入量的采样值经常受到不明原因的扰动。我们要摸清这种扰动的规律,以便对症下药。但是这种扰动稍纵即逝。
我们的困扰是:程序正常运行时看不出规律,单步走又难以捕捉扰动。怎么办?
有没有办法,把扰动记录下来?
当然可以。
我们可以利用系统里剩余的RAM,开辟一块单元,做成队列。并写段测试程序,定时把新采样值压入队列。
然后我们让程序运行,在需要的(任意)时刻,让程序停下来。这时,队列里记录的就是最新一批采样数据。
只要队列的深度足够大,我们就可以找出扰动的规律来。
——什么,你问我什么叫队列?
——匠人曰“天呐,我看到火星人了!……”
(未完待续……)
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。