当前位置:网站首页>嵌入式开发:嵌入式基础——软件错误分类
嵌入式开发:嵌入式基础——软件错误分类
2022-07-29 18:26:00 【粤嵌教育】
调试嵌入式系统是嵌入式开发人员必不可少的事情。调试的范围可以从非常简单的错误(几乎不需要任何时间来调试)到人类已知的一些最复杂和最令人沮丧的错误。任何嵌入式软件错误都可以分为四种不同的类别,虽然其中一些类别可能看起来很奇怪,但每个类别确实是可能的。
错误类型 1 – Bohrbugs
如果一个嵌入式系会有bug,开发人员更愿意把它们归类为Bohrbugs。Bohrbugs是当软件在类似的条件下运行时很容易重现的软件错误。因为开发人员可以重现bug,所以深入研究并找到根本原因通常很简单。
错误类型 2 – Heisenbugs
开发人员时不时会遇到一个bug,一旦发现这个bug,它就会消失,任何重现这个bug的尝试都会失败。开发人员可能会认为这是侥幸找到了系统,但实际上该系统有一个 Heisenbug。Heisenbug 是一种bug,一旦在系统中观察到它们,就会改变它们的行为和属性。尝试隔离和调试问题通常是困难和短暂的。Heisenbugs 通常表明代码中某处存在竞争条件。对代码进行轻微的修改,调整时间或者将调试器连接到系统上,就能神奇地让bug消失。
错误类型3 – Schroedinbugs
开发人员偶尔会开发一个看起来运行完美的嵌入式系统。嵌入式开发人员可能正在执行代码审查或添加新功能,然后突然发现代码中有一个从未在系统中出现过的bug。在检查系统行为时,开发人员发现系统一直不能正常工作!只有当你观察它们时才会出现的bug被称为Schroedinbugs。在发现bug之前,系统运行良好,但是只有在发现bug之后,它才会突然表现出一致的行为。
错误类型4 – Mandel bugs
开发人员有时会遇到一个看似简单、类似Bohrbug的bug。在对代码做了微小的修改后,bug似乎被解决了,但是在修复第一个bug时又发现了一个新的bug。修复第二个bug会导致系统中出现第三个和第四个bug,然后是第五个,第六个,第七个!无论开发人员做什么,对一个bug的解决方案似乎都会破坏这个bug,导致系统中更多的bug和问题。这些看起来断裂或混乱的bug被称为Mandel bugs,这个想法是,这些看似简单的错误实际上是系统中复杂交互的结果,开发者并没有完全理解。因此,解决一个领域的问题会导致另一个领域的问题。
结论
人类已知的每一个软件bug都属于这四个bug类别之一,下次系统需要调试时,请记住这些类别,对bug进行分类可以帮助嵌入式开发人员找到潜在的原因。
边栏推荐
猜你喜欢
随机推荐
leetcode:36. 有效的数独
ECCV 2022 | AirDet:无需微调的小样本目标检测方法
scroll bar style
吴恩达撰文:公共数据的 “围墙”
无人驾驶与人工驾驶的对比,人工驾驶的优缺点
支持向量机SVM
一线大厂软件测试面试题及答案解析,2022最强版...
发力5G平板市场,品网科技首发展锐5G平板解决方案
Zadig 环境负载均衡:0 人工干预,极速部署
字节跳动基于 Iceberg 的海量特征存储实践
请问一下,我这个调度任务显示执行成功,但是并没有成功,我这个任务是odps sql ins
R语言时间序列数据提取:使用xts包的first函数提取时间序列中最前面一个月的数据(first 1 month)
C陷阱与缺陷
【Harmony OS】【ARK UI】ets使用第三方类库crypto实现加密解密
KubeMeet 报名 | 「边缘原生」线上技术沙龙完整议程公布!
Apache Doris 1.1 特性揭秘:Flink 实时写入如何兼顾高吞吐和低延时
平行坐标图:高维数据可视化必备图形
HCIP笔记第十四天
经典SQL语句大全
SK海力士工厂发生氢氟酸泄漏,3名工人受伤!官方称不会影响生产