论文部分内容阅读
随着嵌入式技术的高速发展,嵌入式系统的硬件规模和复杂度得到了极大的提高,相应的,嵌入式软件的复杂度和性能也日益提高,嵌入式系统中运行的软件代码要求尽量的高效和精简,这样嵌入式软件的性能好坏直接影响着整个嵌入式系统质量的高低,因此嵌入式软件开发人员迫切需要一款使用方便的,高性能的分析工具来查找嵌入式软件的瓶颈所在,然后有针对性的修改代码,从而提高嵌入式软件代码的质量。本文在分析现有的性能分析工具的基础上,主要针对嵌入式软件的代码覆盖率以及函数的执行时间和调用次数这些软件代码的关键性能信息,研究了在嵌入式开发平台下的软件动态分析工具,准确的收集程序在运行过程中的动态信息,并以图形化的方式显示分析结果,最后以插件的形式集成到Eclipse开发环境中,实现了针对目标体系结构为ARM、操作系统为Linux环境下的嵌入式软件动态分析工具CPT。按照功能模块的划分,嵌入式动态分析工具CPT分为数据采集模块,通信模块,数据处理模块和结果显示模块四大模块,其中最核心模块就是性能数据采集模块,该模块采集程序在动态运行过程中的覆盖率信息以及性能信息这两个关键部分的数据信息,使用探针插桩技术来采集动态数据,采用目标文件级指令替换方法实现探针插桩的,在程序执行的过程中,被测代码在待插桩点跳转到桩代码处执行,执行完桩代码后返回源程序继续执行的动态分析方法。其中覆盖率信息的收集方面,以开源的gcc/gcov覆盖分析为基础,重点研究了路径覆盖信息的统计方法,探针变量采用二维矩阵方法来统计的,准确的计算路径覆盖率;性能数据收集方面,采用分片计时的方法来设计探针函数来收集的,准确的收集程序在运行过程中函数的执行时间。根据分析工具的测试环境,利用该工具对程序做动态分析,对于给定代码直观的显示其测试结果,覆盖率方面与开源的分析工具gcov做了对比,性能方面与开源的分析工具gprof和ltrace做了对比,在功能测试与比较中,验证了动态分析工具CPT的可用性和实用性。