"); //-->
程序调试(除错)过程中的一些雕虫小技(五、给程序安装个黑匣子)
某年某月的某一天,一架飞机以优美的抛物线形状,一头栽到海里去了……几天后,人们找到了飞机的黑匣子,里面记录了飞行员的最后一句话:“天呐,我看到火星人了!……”
以上空难情节我们经常会通过新闻看到吧(当然,最后一句是匠人版的科幻情节)。看看,飞机的黑匣子可以记录并再现现场,多么神奇!欧耶!
我们在调试程序时,也可以借鉴这个方法,给程序按装一个黑匣子。程序中的黑匣子其实就是一个在内存中开辟的队列。队列的原理我们很清楚,先进先出,后进后出(与飞机黑匣子的特性相同)。
比如说吧,假设我们的系统在工作中,某个输入量的采样值经常受到不明原因的扰动。我们要摸清这种扰动的规律,以便对症下药。但是这种扰动稍纵即逝。
我们的困扰是:程序正常运行时看不出规律,单步走又难以捕捉扰动。怎么办?
有没有办法,把扰动记录下来?
当然可以。
我们可以利用系统里剩余的RAM,开辟一块单元,做成队列。并写段测试程序,定时把新采样值压入队列。
然后我们让程序运行,在需要的(任意)时刻,让程序停下来。这时,队列里记录的就是最新一批采样数据。
只要队列的深度足够大,我们就可以找出扰动的规律来。
——什么,你问我什么叫队列?
——匠人曰“天呐,我看到火星人了!……”
(未完待续……)
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
arm-elf-objcopy支持bin格式的转换吗?
北京博彦科技公司招聘手机测试工程师
PROTEL技术大全2
uPC1185H2功放电路
TDA8190功放电路
[求助]如何通过编程实现Flash的读写?
protel技术大全
香港科技大学与英特尔共建联合实验室,聚焦高能效智能计算
TDA8192功放电路
请教:关于网络变压器。
2025年,全球平板出货量增长10%,市场增速接近放缓
protel技术大全1
富士通半导体 MB95260系列“Easy-Kit”演示
iQOO 15 Ultra搭载第五代骁龙8至尊版打造性能Ultra
英飞凌发布2026财年第一季度运营成果: 2026财年顺利开局
Protel的应用
深度解读 | 索尼与TCL的战略合作布局
Mathcad在6西格玛方面的应用
AMD推出第二代Kintex UltraScale+中端FPGA,助力智能高性能系统
小弟初次接触DPS,哪位大哥给小弟补补课!!
Mathcad基本功能演示(101 demo)
南芯科技发布高性能全桥驱动芯片,驾驭汽车智能驱动未来
2010英特尔杯大学生电子设计竞赛(8)
Bourns 推出多款方形封装空心电感系列: 具备高 Q 值与高自谐振频率,满足高频应用需求
2010英特尔杯大学生电子设计竞赛(9)
尼得科电机(大连)在智能・安全・绿色・创新领域斩获多项发展成果
TDA8196功放电路
2025年第三季度,海底光电子市场增长32.5%,PTC’26彰显向网状网络架构转型趋势
Protel封装库至Allegro的转化
uPC1212C功放电路