查找嵌入式C语言程序/软件中的缺陷的多种技术

上述技术中的每一种都能查找出某一类特定的错误。 假如用户仅采用上述技术中的一种或许几种来停止验证, 这样的验证方法很有可能会漏过对程序中的一些缺陷的反省。 解决此类效果的一种平安和有效的战略就是同时运用上述软件验证中的一切互补技术。 这样就能建立起一个结实的框架来协助用户反省出可能会避开某种特定技术的缺陷。 用户也自然地建立起一个能检测出关键并且难以查找的功用性错误的环境。   本文将详尽阐述基于形式的静态代码剖析、运行时内存错误检测、单元测试以及数据流剖析等自动化技术共同运用时是如何查找出嵌入式C言语程序/软件中的缺陷的。 本文中将以ParasoftC++test为例来演示上述各项技术。 C++teST是一个经广泛的最佳实际证明能提升软件开发团队开发效率以及软件质量的自动化集成解决方案。   当读者在阅读本文以及任何时候思考查找到的缺陷时, 关注文中的截图是很重要的。 自动化检测例如内存崩溃和死锁的缺陷, 毫无疑问对任何开发团队都是一项必不可少的任务。 尽管如此, 最致命的缺陷却是功用性错误, 这往往是难以自动发现的。 在本文的结论部分我们将扼要地讨论一下查找这些缺陷的技术。 我们将就一个我们最近遇到的案例来引见以及演示我们所推荐的缺陷查找战略:一个运行在ARM板上的复杂传感器应用程序。   假设我们曾经创立了该应用系统,   我们尚不明确系统不能正常任务的原因, 因此我们设法对系统停止调试, 或许我们运用一些被证明能自动定位出错误的工具或技术来协助我们减轻负担。   从这一点而言, 假如自动化技术依然没有协助我们查找到错误, 那么我们不得不回到运用调试器作为最后的方法。   基于形式的静态代码剖析  这里, 我们假设仅在绝对必要的状况下才运用调试器停止调试, 它将查找到如下图所示的效果:  这是违反了MISRA的一个规则, 因此我们将C言语此处检测到的抵触修正掉,   我们发现有了一些改善:一些输入被显示在了LCD屏上了。 但是, 因此我们需求再次地做出选择。 由于经历告诉我们自动化错误检测技术能十分高效地反省出我们当前程序所遇到的内存崩溃这类效果,   整个程序的运行时内存监测  为了停止运行时内存监测, 我们运用C++test来插装应用程序。 所以经过插装后的程序适合在目的板上运行。 我们将结果下载到PC上,

posted on 2011-04-08 07:59  青青啊  阅读(154)  评论(0编辑  收藏  举报

导航