论文部分内容阅读
众所周知,当使用C/C++这类编程语言编程时,需要由程序员负责内存管理。现在随着硬件和软件系统变得越来越复杂,在使用C/C++编写的软件系统中难免会有像内存泄漏,内存读写越界之类的内存错误。内存错误常常具有隐蔽性,单单依靠运行程序或者使用GDB之类的传统调试器来检测内存错误的故障源是非常困难的。于此同时,OSE实时操作系统是一款广泛应用广泛的由ENEA公司开发的实时操作系统产品。目前,OSE实时操作系统的用户可以使用IBM公司Rational PurifyPlus测试工具来分析OSE应用软件中的内存错误,但Rational PurifyPlus测试工具作为IBM公司的商用软件,价格高昂,并不是所有OSE实时操作系统的用户愿意承担的。与此同时,由于Rational PurifyPlus为闭源软件,我们无法根据OSE操作系统的需要对其进行修改,因而在某些场合使用Rational PurifyPlus检测OSE应用中的内存错误的检测结果不是很理想。Valgrind是一个用于构建程序调试和程序剖析工具的开源框架。Valgrind工具集可用于分析应用软件中的内存错误和线程错误,目前支持ARM处理器,x86处理器和PPC处理器的硬件平台,并可运行在Linux操作系统,Darwin操作系统,FreeBSD操作系统和Android操作系统上。本文深入探讨了使用Valgrind开源工具集替代Rational PurifyPlus工具来检测OSE应用程序中内存错误的可行性方案。首先,本文在功能和性能上对比了Rational PurifyPlus工具和Valgrind工具,以证明Valgrind工具替代Rational PurifyPlus工具的可行性。随后,本文介绍了Valgrind工具组件及Valgrind工具检测内存错误的原理,OSE操作系统的架构及其系统特性。然后本文深入分析了Valgrind工具集不支持检测OSE操作系统中应用程序的内存错误的根本原因,并在此基础上提出了四种解决方案,并详细分析了每种方案的优劣。最后本文介绍了由笔者开发的软件原型,该软件原型采用了在Valgrind平台下同时运行OSE软内核(OSE软内核可以理解为运行在Linux主机上的OSE虚拟机)和OSE应用程序的方案,以达到使用Valgrind工具分析OSE应用程序中的内存错误的目的。该软件原型包括根据OSE操作系统特性制定的Valgrind工具集,以及用于Valgrind工具集和OSE软内核通讯的中间件OSE-WRAPPER.最后本文通过功能测试和速度测试验证了方案的可行性。