技巧和窍门–调试嵌入式软件

调试是每个开发人员都想避免的一项任务,但是不幸的是,这是软件开发的必然弊端。当您需要花费很多时间来启动调试会话时,每个开发人员都应注意以下7条提示。

软件开发和调试的概念。用放大镜在二进制代码中发现的错误。

提示1 –采取受控的婴儿步骤

当错误蔓延到嵌入式软件中时,开发人员的第一个直觉是跳入代码并开始进行更改。代替以受控和有针对性的方式进行更改,它们通常是偶然的,并且几乎是随机的。嵌入式软件开发不是狂野的西部。即使是最简单的错误,也要解决,包括检查可用数据,评估,假设最可能的原因,进行更新然后进行测试。如果更改不能解决问题,则应公开新数据,然后再帮助重复该过程。

提示2 –提高断言密度

ASSERT宏是开发人员可以用来验证其代码中的假设的出色工具。令人惊讶的是,许多开发人员没有花时间将其放入代码中。代码库的ASSERT密度通常可能是长时间的调试会话与痛苦的调试会话之间的差异,或者是在错误假设发生时就对其进行陷阱的原因。 ASSERT可以帮助开发人员立即发现错误或假设失败。您的代码库的ASSERT密度是多少?

提示#3 –使用数据记录器

调试时,有关软件运行方式的信息是嵌入式软件工程师的最佳工具。具有性能信息(例如任务何时开始和完成),是否在其他细节中被抢占是至关重要的。日志的使用是开发人员深入了解软件的一种好方法。日志可以像RAM缓冲区一样简单,可以将文件写入外部闪存,也可以像传输到远程位置的编码数据一样复杂。无论如何,日志文件是收集用于调试和系统分析的见解的好方法。

提示4 –使用高级断点

开发人员熟悉使用标准的断点,只需双击代码行的左边距即可打开这些断点。许多IDE具有更高级的断点功能,这些功能很少使用。高级断点的一个示例是将行设置为在变量达到特定值时中断。使用高级断点可以大大减少调试时间,并使发现错误的难度大大提高。

提示5 –再次查看数据表

调试外围设备可能特别困难。现代的微控制器可以有10个寄存器来设置单个外设。外围设备设置并不总是很明显或有据可查。更糟糕的是,正确设置的细节通常不在单个数据表中。面包屑散布在家庭,外围甚至有时是应用笔记中。只看一个是不够的。如果硬件出现故障,请一次又一次地查看数据表。

提示6 –监视调用堆栈

开发人员有时会首先质疑他们如何到达特定的代码行。 IDE包含一个可以准确显示该信息的调用堆栈窗口。调用堆栈显示了调用了哪些函数以及调用的顺序,并揭示了对跟踪错误很有用的信息。

提示7 –休息一下

调试可能是一项繁重的工作。深入研究软件和硬件的工作原理可以为开发人员提供隧道愿景。开发人员有时需要退后一步,要么继续执行其他任务,要么休息一下。通过散步或放松来摆脱系统,将使潜意识在解决方案上工作,当需要重新开始查看代码时,通常还会有其他见解。

结论

无论您花费大量时间进行调试还是花费很少的时间进行调试,事实都是作为嵌入式软件开发人员无法避免的。使用本文中的提示可以帮助使调试更加可口。

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.