调试嵌入式系统是嵌入式开发人员必不可少的事情 。 调试的范围可以从非常简单的错误(几乎不需要任何时间来调试)到人类已知的一些最复杂和最令人沮丧的错误 。 任何嵌入式软件错误都可以分为四种不同的类别 , 虽然其中一些类别可能看起来很奇怪 , 但每个类别确实是可能的 。
错误类型 1 – Bohrbugs
【Linux|嵌入式开发:嵌入式基础——软件错误分类】如果一个嵌入式系统会有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进行分类可以帮助嵌入式开发人员找到潜在的原因 。
- 亚马逊|怎么判断APP软件开发的质量
- Linux|无需公网IP、简单易上手,这台私有云才是普通用户的最佳选择
- Java|基于Java的接口快速开发框架
- 华为|广州蓝景实训部分享—新人入行做开发,选钱还是选前?
- Java|java EE开发之Servlet第二课:Servlet的三个hashMap
- 编程|嵌入式开发:提示和技巧——用C进行防御性编程的最佳实践
- 美团|APP它是如何开发出来的?如何进行APP开发步骤
- excel|如何入门单片机开发?
- 5G|俄罗斯决定绕过5G直接开发6G网络:堪称神速!科普6G能有多快
- Linux|29个你必须知道的Linux命令