(计算机应用技术专业论文)嵌入式软件性能测试工具的设计与实现.pdf_第1页
(计算机应用技术专业论文)嵌入式软件性能测试工具的设计与实现.pdf_第2页
(计算机应用技术专业论文)嵌入式软件性能测试工具的设计与实现.pdf_第3页
(计算机应用技术专业论文)嵌入式软件性能测试工具的设计与实现.pdf_第4页
(计算机应用技术专业论文)嵌入式软件性能测试工具的设计与实现.pdf_第5页
已阅读5页,还剩86页未读 继续免费阅读

(计算机应用技术专业论文)嵌入式软件性能测试工具的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

“:o :i ,: - , 独创性声明 f i f i f j i i i i f i j j i i i i f i i i i i i i i i i l l 0 y 18 0 2 6 9 4 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:鏖查! 至玺日期:2 a o 年 月z ;日 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:鏖蕉塑璺一导师签名:邋 日期:2 矗j 6 年r 月巧日 摘要 摘要 随着嵌入式软件复杂度和规模不断提高,嵌入式软件的质量对整个嵌入式产 品的质量起决定性作用,而嵌入式软件的性能直接影响着应用软件的质量的高低。 因此嵌入式软件开发人员迫切需要一款性能测试工具,能够有针对性的分析该领 域中的嵌入式软件的性能。该工具可以实现统计嵌入式软件的性能信息,方便开 发人员查找约束嵌入式软件质量提高的瓶颈,然后有针对性的修改代码。 本文主要分析一些主流的性能测试工具的主要特征,研究嵌入式软件性能测 试的基本方法。本文论述的性能测试工具是针对计算密集型嵌入式软件而设计的, 用于动态分析多任务软件在执行过程中各个函数性能特征。该性能测试工具是参 考g p r o f 性能测试工具而设计的,相对于g p f 可以支持多线程多任务软件中动态 函数和静态函数的性能测试。设计性能测试工具的软件体系结构和内部组成模块, 研究性能测试工具中各个模块以及相互关系。设计和实现性能数据收集模块和数 据通信模块,改进g p f 性能数据分析的算法。 首先,研究了性能数据收集模块,不同函数类型性能信息使用不同的数据来 表示,采用插桩方式、断点调试技术等手段来实现数据收集;研究性能数据的存 储形式,设计并实现性能数据存储过程中能够快速查找并保存性能数据的算法; 研究多任务程序设计方式,使用进程跟踪技术,实现多任务性能数据收集。其次, 在性能数据分析方面,以g p r o f 性能数据分析为基础,重点研究了性能数据转换的 算法。通过修改原有算法的基础上,设计并实现支持动态函数和多任务的性能数 据分析。最后,研究嵌入式软件交叉开发的特点,设计并实现宿主机端和目标机 端通信模块。设计简单可靠的数据编码策略,传输不同类型的数据;使用操作系 统提供a p i ,设置通信配置方式,实现宿主机与目标机之间可控和安全传输数据。 根据性能测试工具的测试环境和测试目标,设计出有针对性的测试用例。使 用性能测试工具的操作界面运行并分析测试用例,最后分析测试结果来验证性能 测试工具基本功能实现情况。通过与其他性能测试工具的比较,证明该性能测试 工具的可用性和实用性。 关键字:嵌入式软件,性能测试工具,性能数据收集,性能数据分析,数据通信 , a b s t r a c t a b s t r a c t w j n li l l l p r 0 v 锄锄to fm es c a l e 强dc o m p l e x i t ) ,o fm ee m b e d d e ds o 脚a r e 也e q u a l 时o f 锄b e d d e ds o 帅a r ep l a yad e c i s i v er o l ei n 也eq u a l 埘o ft h e e m b e d d e d s y s t e m 缸d 吐l ep e r f 0 r m 强c eo f 锄b e d d e ds o f 啊a r ed i r e c n yi n n u 锄c e 也eq u a l i t yo f a p p l i c 撕o n s ,s oa 1 1t 1 1 e 锄b e d d e ds o 触a r ed e v c l o p e rw 锄tt on e e do n ep 酬f o m l 觚c e t e s t i n gt o o l ,w h i c h c a nt e s t 也ep e r f 0 咖a n c eo f 锄b e d d c ds o 行w a r ei n s p e c i f i c d o m a i n t h et 0 0 lc 觚a n a l y s et h ep e r f o m 锄c eo ft t l e 锄b c d d e ds o 触a r e ,趾dm e d e v e l o p e r sc 弛e a s i l y 缸d 也ew e a 虹e s s e sw m c ha 侬斌m e 锄b e d d e d胁a r c q 砌i t y 锄dm e n 也ed e v e l 叩e r sm o m 匆也ec o d e st oi m p r 0 v e 也eq u a l 时o fs o 小 ,a r e i n “sd i s s e r t 撕o l l ,w e 如宙y s et 1 1 em a i nc h a 聪沁t e r so fs o m e 昀d i t i o n 锄b e d d e d s o r w a r cp e r f o m a n c et e s t i n gt o o l ,a n dw es t u d y 也eb 嬲i cm e t l l o d su s c dt ot c s t 既n b e d d c ds o 胁a r ep e r f b 皿响n c e t h ep e r f o m l 锄c et e s 位唱t 0 0 1d e s c r i b c di n 也i sp a p e ri s d e s i 印e df o r 也ec o m p u t 撕o n - i i l t 既s i v e 小c d d e ds o 胁盯e ,孤dd y n a m i c i l y 缸a l y s em e 如n c t i o np e r f 0 m l a n c ec _ h 删e r i s t i c so fs o r w a r ei n也ee x e 吼i t i o n w e d e s i g nt h e p e r f 咖跹c et o o lw l l i c hi sb 勰e do ng p r c l a t i v et ot l l eg p e 也et 0 0 1c 缸t e s tt h e d y n a m i cf i 】i n c t i o na n ds t a t i c 知n c d o nw h i c _ hi n c l u d em u l t i t 1 1 r e a d sa n dm u l t i t a s k 也e s o 小a r e w ed e s i g n 也es o 胁a r e 砌i t e c t l l r ea n di 1 1 t e m a lm o d u l o ft l l ep e r f o m 龃c c t e s 如gt o o l ,锄ds t i l d ya 1 1t h em o d u 】骼锄d 缸e n e l 撕0 na m o n ge a c hm o d u l e r e l 撕v et o g p r o f :w ed e s i 笋趾di m p l 锄c n t 也en e w 面t h m e t i co fp 晌m 锄c ed a t ac 0 1 1 e 嘶o n m o d u l e 锄dd a t ac o m m u n i c a t i o nm o d u l e ,a n di m p r o v et l l ep e r f o n n a n c ed a :t a 觚a l y s i s m o d u l eo f g p r 0 f i r s to fa l l ,s t u d y 也ep e 响m 锄c ed a t ac 0 1 1 e 商o nm o d u l e d i 脑tp e r f b m 趾c e d a t ar 印r c s e n t s 也ed i f f n t 允n c t i o nt y p e ,锄dw ea r e 鸺e dt 0i i l s 酣s t l l _ b - c o d eo f 也e s o l l r c ec o d e s ,m s t a l l i n gb r ca :b o i n tt e c h m q u ea n ds 0o n ,a n dc o l l e c t 也ep d f 0 m 觚c e d a :t a w e s t u d yt l l ep 豇f 0 珈a a n c cd a t as t o r a g ef o m ,觚dd e s i g n 锄di n l p l e m e n tm e a l g o r i m m 删c hc 锄q u i c k l yf i n d 锄dk e 印p e 门晒m l 锄c ed a t a w es t u d ym u l t i - p r o c e s s e s p r o g r a m m i n gm e m o d ,锄d u s e也e p r o c e s s 仃a c et e c h l l i q u c t 0 i n l p l 锄既t m e m u l t i - p r o c e s s e sp 硎晒m 锄c ed a t ac o l l e c t i o n s e c o n d l y ,i i l 也ew a yo f 船a l y z i n g 也e p 柏m 1 锄c ed a t a w em a i n l ys t u d yn l et 1 1 ea l g o r i m mw h i c hi su s e dt o 仃a n s f o r mm e i l 丝塑一 p e 哟m a n c ed a t ab a l s e do nt 1 1 ea n 羽y s i so fg p r o f p e 哟咖a n c ed a t a n 哟u 曲m o d i 触1 2 t 1 1 eo l da 】g o n t l l m ,w c d e s i 印a n di i n p l e i n 吼tt h ep c r f 0 黝a 1 1 c ed a t a a n a l y s i s 、池c h p r o v l d e sf o rn l ei l y n a m i cf 妇c t i o n a i l d m u l t i p r o c e s st e s t i n g a tl a s t ,w es t u d vn l e c r o s s 。d e v e l o p m e n tc h 黝c t e r0 ft 1 1 ep e 墒m a n c e t e s 血go f 锄b e d d e ds o 触a r e ,锄dw e d e s l 缈a 工1 d 皿p l e m e n tt h e 啦e tc o 姗u 1 1 j 训o nm o d u l e 粕dt 1 1 e h o s tc o m m 证c a t i o n m o d e s l 幽gm es 蛔p l ea 1 1 dr e i i a b l ec o 幽gs 眦慨砌c h 咖s 觚t 1 1 e d i 胁e i l t t y p e so 士p e r f o m l a l l c ed a t a w eu s e 出eo sa p i t 0s e t 也ec o 蛳u n i c a 廿0 nc o n 丘g u 洲o n a n d 衄p i 锄e l l tt h ec o n 仃0 1 1 e da n dr e l i a b l en 勰s m i t 也ed a t ab e t 、) l r e e n 也e h o s ta n dt 1 1 e t a r g e t 1 j 印e n d m go nm ee n v 主r o n m e n ta n dt e s t i n g o b j e c t i v e0 fp e r f o 册a 1 1 c e t e s t i n 2 t 0 0 1 ,w ed e s l 盟t h et e 妣gc a s e 血廿1 ef a c eo f 廿1 ep e 哟m 1 觚c e t e s t i n gt o o l ,w ei m p l e m e n t t n et e s t l n gc a s ea i l d a n a l y s e 也er e s u l t ,t ot e s t 也eb a s i c 矗m c t i o no f 也ep e 响m a n c e t e s t l n gt o o l c o m p a r e dt o 血eo t h e rp e r f o m a l l c et e s t i n g t 0 0 1 s ,w ed e m o n s t r a l t en l et 0 0 1 k e y w 。r d s :锄b e d d e ds 。觚a r e ,p e 响n n a i l c e t e s 如gt 。1 ,p e 哟m l a n c ed a t ac 。1 1 e c t i 。n p e 哟m l a n c ed a t aa n a ly s i s ,d a t ac o m m m l i c 撕o n i h 目录 目录 第一章绪论1 1 1 课题研究背景及意义1 1 2 国内外现状及分析。2 1 2 1v m e 性能测试工具。2 1 2 2c o d e t e s t 性能测试工具3 1 2 3g p r o f 性能测试工具4 1 3 主要研究内容及成果4 1 。4 论文结构5 第二章性能测试工具功能需求及关键技术 6 2 1 性能测试工具的功能需求6 2 2 程序插桩技术7 2 2 1 可执行文件插桩一7 2 2 2 链接过程插桩8 2 2 3 源代码级插桩8 2 3p 1 1 r a c e 跟踪技术9 2 4 多进程以及信号机制1 1 2 5 断点调试技术1 1 2 6 本章小结11 第三章性能测试工具系统的设计1 2 3 1 总体框架1 2 3 1 1 体系结构的设计1 2 3 1 2 体系结构的核心1 4 3 2 预处理过程设计1 4 i v 目录 3 2 1 插桩技术比较和选择15 3 2 2 源代码插桩设计15 3 3 性能数据收集模块设计17 3 3 1 性能数据收集模块初始化18 3 3 2 性能数据获取的手段21 3 3 3 多任务性能数据收集2 2 3 3 4 统计函数调用关系的设计2 3 3 3 5 函数执行时间和调用次数统计2 6 3 4 性能数据分析模块设计。2 8 3 4 1 性能数据分析原理及重要数据结构2 8 3 4 2 性能数据分析中的图结构3 2 3 4 3 性能数据分析流程3 4 3 4 3 1 静态函数分析3 4 3 4 3 2 动态函数分析3 6 3 4 4 性能数据文件3 6 3 4 5 多任务性能数据分析3 7 3 5 通信模块设计3 8 3 5 。1 通信模块的组成一3 8 3 5 2 通信数据的编码策略。4 0 3 5 3 通信模块工作流程4 0 3 6 本章小结4 1 第四章性能测试工具系统的实现4 2 4 1 源代码插桩的实现4 2 4 2 性能数据收集模块实现4 4 4 2 1 性能数据收集部分初始化4 5 4 2 2 多进程以及监控进程的实现4 6 4 2 3 性能数据处理5 0 4 2 3 1 静态函数和系统调用的事件处理5 0 4 2 3 2 动态库函数的事件处理5 3 4 - 3 性能数据分析模块实现5 5 v 目录 4 3 1 性能数据分析的前端处理5 5 4 3 2 性能数据分析的后端处理5 9 4 4 通信模块实现5 9 4 4 1 目标机端通信模块实现5 9 4 4 2 宿主机端通信模块实现6 2 4 5 本章小结6 3 第五章嵌入式性能测试工具的测试与分析 5 1 测试环境和测试目标“ 5 2 测试用例的设计6 4 5 3 测试过程及结果分析6 9 5 3 1 功能验证6 9 5 3 2 比较与分析7 3 5 4 本章小结7 4 第六章结束语 7 5 6 1 全文总结7 5 6 2 下一步工作7 5 参考文献 攻硕期间取得的研究成果。 v l 8 0 第一章绪论 1 1 课题研究背景及意义 第一章绪论 随着嵌入式系统应用的范围越来越广泛,嵌入式技术的的飞速发展,嵌入式 硬件的规模和性能得到飞速的的发展,这样,嵌入式系统经历了几十年的发展, 嵌入式系统的应用范围渗透到各个领域,大到科学研究、工程设计、军事技术, 小到信息家电、娱乐等日常生活中,在国民经济的各个方面承担着越来越重要的 作用。所以嵌入式技术已经成为当前计算机技术当中发展的热点。嵌入式系统以 计算机技术为基础,以应用为中心,并且软硬件可裁剪,适用于应用系统对功能、 可靠性、功耗、体积、成本等有严格要求的专用系统。它是先进的计算机技术、 半导体技术、电子技术和各个行业的具体应用相结合的产物i l 】。 在当前科学技术日新月异的情况下,计算机硬件技术的不断进步,芯片功能 和硬件的处理能力不断加强,同时也导致硬件成本下降,嵌入式软件已成为嵌入 式产品数字化改造、智能化增值的助推器、发展的引擎。掌上电脑、移动通讯设 备、数字电视d t v 是嵌入式软件应用的重要领域。由于嵌入式系统的应用关乎国 际民生,涉及到工农商的等各个行业,以及关系到国防和政务等社会生活的方方 面面。所以在嵌入式软件方面的研究决不能受制于人,嵌入式软件方向的研究必 然成为我国软件产业未来发展的主流方向,面对即将繁荣的嵌入式软件也将走向 产业化,嵌入式软件的产业链也即将的诞生。 嵌入式系统软件和应用软件是嵌入式系统的核心部分,嵌入式系统的硬件必 须根据具体的应用需求和应用场合的要求,以成本、功耗、可靠性、体积,处理 能力等作为选择指标,由于大多数嵌入式系统都是资源空间有限,因此要求软件 代码可靠,紧凑,特别是大多情况下,对嵌入式软件的实时性有严格要求。随着 嵌入式系统应用的不断深入和产业化程度的不断提升,新的应用环境和产业化需 求对嵌入式系统软件提出了更加严格的需要。并且,在新需求的推动下,企业对 嵌入式操作系统内核不但需要具备微型化、高实时性等基本特征,还将向高可信 性、自适应性、构件组件化方向发展;所以支撑研发环境将更加集成化、自动化、 人性化;系统软件对无线通信和能源管理的功能支持则显得日益重要也是未来国 内嵌入式系统的发展趋判引。 电子科技大学硕士学位论文 嵌入式系统软件对性能和实时性的要求相对较高,特别是在军用方面等关键 部门中的应用,嵌入式系统存在着缺陷或问题都可能会导致巨大的无法弥补的后 果。此外,在民用的嵌入式系统中,生产和使用的数量较大,同样也可能会导致 严重的经济损失。所以需要对嵌入式系统中的软件进行严格、系统和全面的测试。 对于提高软件的质量,提高系统的稳定性都有很大的帮助。 目前,使用比较多的嵌入式系统测试系统,主要是由国外大的i t 公司开发并 提供,其中比较有代表性的系统测试工具有:t e l e l o g i c 公司的开发的l 0 酉s c o p e , m e t r o w e r k s 公司开发的c o d e t e s t ,w i n d r e r 公司开发的c o v e r a g e s c o p e , 还有p l 公司开发的c a n t a t a 等等。总体的情况来说,国外厂商开发的嵌入式系统 测试平台功能强大,技术先进。但是,每一套测试工具的价格都高达几万,甚至 几十万美元,增加了嵌入式软件的开发成本,导致性能测试工具的无法普及,这 样也就影响了国内的嵌入式软件研发的质量,而国内的嵌入式软件研发就落后很 大一步。因此,国内也出现了一些嵌入式软件测试平台的提供商,例如:北京科 银成技术有限公司开发的d e l t a s y s t 锄和l 锄b d a t 0 0 1 。但是由于国产嵌入式平台 数量较少,国外的嵌入式测试系统对国产嵌入式软件支持的不好,所以需要开发 一套具有自主知识产权的,功能比较完善,使用范围较广的嵌入式系统测试平台, 以提高国内嵌入式系统开发的水平和竞争力,在当今的信息化建设中取得更大的 社会效益和经济效益。 1 2 国内外现状及分析 随着嵌入式系统的应用领域不断扩大,开发者对嵌入式应用程序性能的要求 越来越强,不论是国内还是国外,不论是商业领域还是开源社区,都出现了大量 嵌入式性能分析工具,并且各有特点。目前嵌入式软件性能分析工具多种多样, 主要产品有i n t e l 公司的v t l m e 【3 1 ,a m c 公司的c o d e t e s t i4 l ,a c c e l 酬c dt e c h 公司的n u c l e u s ;国内的有嵌入式性能分析工具代表是科银京成开发的“道系统” 中的g 锄m ap r o f i l e 【7 】;开源社区中最著名的是g n u 组织的g p r o f 【8 】【9 1 ,下面介绍 几种有典型意义的代表产品。 1 2 1v t u n e 性能测试工具 v t 吼e 是i n t e l 公司开发的功能强大性能测试工具,对于分析和测试代码量 比较大的应用软件效果较好。v t 衄e 可以支持多用户,并且可以同时对4 0 9 6 个并 2 第一章绪论 行运行的处理器进行精确测试。v t 吼e 对软件进行性能测试时,不需要软件的源代 码,分析时也不需要对源代码进行重新编译。v n m e 是通过采样方式实现性能数据 收集的,v t u n e 的采样方式可以分为两种:基于操作系统时钟中断采样和基于处理 器事件采样。v e 通过追踪处理器上执行的所有程序,包括系统程序,应用程序, 驱动程序和第三方库。v t 曲e 采样性能数据之后,对性能数据进行分析。v t 吼e 有 一个内置存有具有代表性的,有典型意义的数据的数据库,v t l l i l e 将采样的性能数 据与数据库中的典型数据进行比较,为消除热点提供一些解决方案【3 j 。 v t 吼e 存在的不足之处,其价格较高,软件规模较大,构架十分复杂,软件的 稳定性也不是太好。v t 蛆e 的局限性很大,仅仅支持i n t e l 系列的处理器。此外, 采样受系统中断的影响很大,不精确的中断机制会影响采样的精度。 1 2 2c o d e t e s t 性能测试工具 c o d e t e s t 是一款专用的嵌入式性能测试工具,是美国的a m c 公司研发的, c o d e t e s t 的功能非常强大,软件测试的函数最多可达1 2 8 0 0 0 个,应用程序中的 任务可以多达1 0 0 0 个【5 1 。同时精确度也非常高,对于每个函数和任务执行时间统 计精度达到5 0 n s ,能够精确的显示各函数或任务之间的调用关系,可以很好的帮 助软件开发人员更加容易的发现系统瓶颈,更好的优化系统性能。c o d e t e s t 还可 以进行代码覆盖率方面的测试,动态分析存储分配情况和追踪分析,进行软件性 能测试分析和代码内存泄漏分析是c o d c t e s t 的强项。 c o d e t e s t 使用软硬件结合的方式实现嵌入式软件性测试的,通过专用适配 器、p c i c p c i 八厂、砸总线、探针或者m i c t o r 插头连到被测试软件系统中,以及 使用软件插桩技术,对嵌入式软件进行在线分析。c o d e t e s t 支持所有“3 2 1 6 位 嵌入式处理器,总线频率小于1 0 0 m h z 。c o d e t e s t 在国外的应用非常广泛【5 j i 引。 不过c o d e t e s t 对具体的硬件依赖性很强,可移植性差和灵活性差都比较差。 需要针对不同的目标系统平台来定制不同的信号捕获探头以及相关的预处理机制 和数据采集方法。对于许多严格封装的软件,无法插入信号捕捉探针,根本无法 对软件进行分析和测试。当前嵌入式技术的飞速发展,硬件的变化日新月异,针 对每一种硬件都定制一款信号捕捉探针,这样将耗费大量的人力物力资源,导致 使用这款软件的成本较高。 电子科技大学硕士学位论文 1 2 3g p r o f 性台皂;9 1 0 试 具 开源社区的g n u 组织支持的性能测试工具g p r o f ,包含在b i n u t i l s 工具链中 【1 0 1 ,对应用程序执行情况进行动态分析。g p r o f 是开源的性能测试工具,由于免 费软件容易获得,所以改进也比较方便。同时使用范围较为广泛,开发者也较多。 它支持多种处理器芯片,使用g p r o f 进行性能测试时,需要g c c 编译器的支持, 而g c c 适用于主流的嵌入式处理器,包括:删,m 口s ,x s c a l e 等等【1 1 】,g p r o f 也 就可以应用于嵌入式系统软件的性能测试。g p r o f 本身的设计结构简单,代码量 小,处理速度快,耗费资源少。采用插桩的方式实现性能数据收集,对应用程序 影响较小,而且调用次数和调用关系的统计是非常精确的。g p r o f 非常适合分析 规模大,结构化和层次化较好的软件。 g p r o f 性能数据收集是以采样的方式实现的,设计简单,不过g p r o f 是时 间统计是通过采样的方式实现的,采样间隔中容易遗漏重要的信息。由于采样方 式是使用i t i m e rp r o f 信号来产生时钟中断方式实现的【l2 1 ,在多线程环境下, 只有主线程响应该中断,也就只能采集主线程中性能数据,所以g p r o f 对多线程 多任务的软件支持较差。 1 3 主要研究内容及成果 嵌入式软件性能测试工具相对于一般的性能测试工具来说有其特殊之处,性 能测试的精确度主要依赖于嵌入式硬件对性能测试的支持,还有在嵌入式软件的 执行和性能数据的分析是在不同的平台上,必须通过通信接口( 以太网和串口等) 来连接。在设计与实现性能测试工具的过程中,主要的研究内容: 1 ) 研究性能测试工具的软件架构:研究了一些性能测试工具的设计方法和新的性 能测试工具的需求,设计出性能测试工具中各个模块之间的关系,其中包括三个 重要的模块:性能数据收集模块、性能数据通信模块、性能数据分析模块。 2 ) 性能数据收集方法的研究:主要研究了代码调试技术,采用了重要的技术有: 代码插桩,设置断点等技术,性能数据数据收集的正确性和充分性直接影响着性 能数据分析的结果。为了实现更加准确的性能数据收集,针对不同对象采用了不 同的性能数据收集方法,对于静态对象采用源代码插桩技术,对于动态对象采用 设置断点等技术。此外研究了进程跟踪技术,多任务设计技术和p t r a c e 进程跟踪 技术。性能数据主要是应用程序在运行过程中上下文信息,使用p 仃a c e 系统调用 4 第一章绪论 可以跟踪并收集堆栈,寄存器等单元中的信息。 3 ) 性能数据分析问题的研究:主要分析g p r o f 性能数据分析的实现方法和原理基 础上,针对新的性能测试工具的功能需求,研究了新的性能数据分析有向图的建 立和遍历算法,研究了多任务性能数据分析处理方法,实现多任务性能数据分析。 4 ) 性能测试工具的通信和控制问题的研究:主要研究了通信协议,性能数据的封 装和通信接口的配置等技术【3 4 1 ,传输性能数据和控制命令采用的通信协议;对性 能数据的封装可以发送不同类型的数据,还可以保证发送的准确性和可靠性;适 应不同通信方式,设计统一的配置方法。 本文的主要研究成果: 深入研究了一些常用的性能测试工具的功能特点和性能测试设计中的常用方 法。根据性能测试需求和性能测试工具关键技术,将应用常用手段应用到新的性 能测试工具中。设计和实现针对计算密集型嵌入式软件性能测试工具的软件体系 结构和组成模块,最终实现性能测试工具的基本功能。 1 4 论文结构 本文主要内容共分为六章,各章节的内容安排的简要介绍如下: 第一章“绪论 ,主要介绍课题研究背景、研究的目的和意义以及当前国内 外现状,确定了课题的研究目标和内容。 第二章“性能测试工具功能需求及关键技术 ,主要介绍性能测试的需求,测 试工具的设计目标和功能需求。在设计中所使用到的一些关键技术和方法,重点 介绍静态插桩技术,多任务设计,p t r a c e 跟踪技术和断点设置技术的研究。 第三章“性能测试工具系统的设计”,设计性能测试工具系统设计的总体框架 和框架中各个组成部分的功能,以及各个功能模块之间的关系。重点是性能测试 工具中各个组成模块的设计原理和算法。 第四章“性能测试工具系统的实现”,具体实现性能测试功能工具的各个模块, 以及各个模块在实现过程中一些重要的函数的定义、入口出口参数的含义以及流 程图,功能模块之间接口等。 第五章“性能测试工具系统的测试与分析 ,设计性能测试工具的测试用例, 通过性能测试工具操作界面分析测试用例,最后分析性能测试工具的结果,验证 性能测试工具的功能实现情况。 第六章“总结 ,在对全文总结之后,提出进一步的研究方向。 电子科技大学硕士学位论文 第二章性能测试工具功能需求及关键技术 本章主要研究性能测试工具的需求,主要是根据需求来确定性能测试工具设 计目标和实现的功能;简要介绍了几种在研究的课题中使用的几种关键的技术, 这几种技术实现的功能和使用方法。 2 1 性能测试工具的功能需求 本设计的主要目标是设计一个用于嵌入式软件性能测试的工具,性能测试工 具的设计是方便开发人员发现系统瓶颈,并查找系统瓶颈的原因,进而可以优化 系统并提高系统的性能【l3 1 。 1 ) 最优化和调整平台的配置( 包括硬件和软件) 来达到最高的性能; 2 ) 判断一个新的模块是否对整个系统的性能有影响【l 引。 本课题论述的性能测试工具是针对计算密集性嵌入式多任务应用软件而设计 的,对于电视中的视频编码、解码、数据加密、解密等计算密集型应用软件而言 非常重要的。计算密集型软件在多重程序系统中,大部份时间用来做计算、逻辑 判断等c p u 动作,计算密集型程序具有应用广、需要的计算资源多、算法调用频 繁、实时性要求高等特点,而程序中所有的功能单元都是以函数的形式表示的, 所以在计算密集型软件中改进热点函数的实现算法是提高性能的重要方法【3 6 1 。设 计的性能测试工具查找和分析热点函数,性能测试工具分析的对象:静态函数( 功 能函数、静态库函数) 和动态函数( 动态库函数、系统调用) 。性能测试工具分析的 函数性能特征: 1 ) 函数时间特征:函数的执行时间、函数调用所有子函数函数执行时间、函数占程 序总执行时间的比例; 2 ) 函数调用次数特征:函数从执行到当前阶段,被调用的次数; 3 ) 函数调用关系特征:函数静态调用关系和函数动态调用关系: 4 ) 支持多任务多线程软件性能测试。 6 第二章性能测试工具功能需求及关键技术 2 2 程序插桩技术 程序插桩概念是由使被测试程序在保持原有逻辑完整性基础上在程序中插入 一些调试代码,通过调试代码可以获取程序运行的特征数据,通过对这些特征数 据的分析,可以获得程序在执行过程中的动态信息。程序插桩技术是软件测试中 一项重要的技术,在静态测试阶段,对程序源代码进行代码插桩,人为地加入一 些测试代码,在程序动态执行过程中通过收集插入的信息来获得程序的执行路径 和状态等数据的技术【1 5 】。插桩在软件结构静态分析阶段完成,在程序动态执行过 程中应用。程序插桩是软件结构动态自动化测试的一个重要基础,也是白盒软件 测试系统的核心技术之一,插桩技术的先进与否决定了测试系统的功能特点。为 了获得程序的执行路径和状态信息,设计插桩程序中有许多问题需要处理,其中 重点包括:桩函数的设计,插桩点的选择,桩函数记录信息的数据存放,以及经 过插桩的程序运行时如何采集相关桩点信息的输出等问题。程序插桩可以在程序 创建的任一阶段实现,根据这个策略,插桩技术可以分为三类:可执行文件插桩、 链接过程插桩和源代码插桩i i 6 | 。 根据在可执行文件生成的不同阶段插入调试代码,插桩技术可以分为3 种: 对可执行文件进行插桩,链接过程中进行插桩,对源代码进行编译处理阶段进行 插桩。不同插桩方法所面临的具体问题各不相同,但在插桩的步骤是相似的。总 体上,代码插桩包含以下4 个步骤: 1 ) 分析待插桩的代码; 2 ) 在适当的位置,插入测试信息的代码; 3 ) 重新整理代码,使测试代码与原代码有机结合; 4 ) 重新构建生成可执行文件【l7 。 2 2 1 可执行文件插桩 这种插桩技术是几种插桩技术中最复杂的,因为在实现过程中没有代码的结 构信息,所以需要编译器相关的知识对代码进行结构分析,通常需要经历反汇编 代码段、解析程序结构、插入测试代码、修改重定位信息、重新生成可执行文件 几个阶段。 可执行文件插桩的方式主要优点有: 1 ) 源代码独立性:直接操作可执行文件,不需要程序的源代码,所以能够对第三 方的软件进行插桩。 7 电子科技大学硕士学位论文 2 ) 编译器无关性:支持多种调试信息,能够对不同编译器编译上不同语言编写的 程序进行分析。 3 ) 执行速度快:无需对源文件进行重新编译,用户不需要关系库文件版本和静态 库文件。 在嵌入式开发环境下,这种插桩方式有其缺点: 1 ) 由于通过直接修改可执行的代码段的程序,从符号表中得到的源代码信息是非 常有限的,难以将得到的信息有效的对应到源代码结构。而有意义的分析测试工 具应该将测试结果对应到源代码中反映给用户。 2 ) 嵌入式软件应用的环境相对较灵活,处理器种类繁多,而且更新速度快。采用 这种插桩技术的分析测试工具为了支持各种处理器是非常困难的【l6 1 。 2 2 2 链接过程插桩 在链接过程中插桩通常修改连接器来实现的,这个连接器中包含一个可以修 改各个目标文件的插桩功能模块。在链接过程中,插桩模块先对目标模块进行必 要的代码修改,通过重定位表和符号表对目标代码进行重定位。最后,把修改后 的目标文件交给链接器进行通常的链接,得到可执行程序。这种插桩技术能够较 大范围对程序进行插桩,包括静态库文件,所以用户不需要单独维护插桩的库文 件。但这种插桩方式需要有相应的应用目标文件,还需要知道程序的链接方式, 所以这种插桩方式的自动化程度较低,所以这种插桩方式主要是应用于学术研究 中【1 7 1 。 2 2 3 源代码级插桩 源代码级插桩是在编译某一阶段对程序进行插桩,这种方式设计的插桩工具 能够最多的知道代码结构信息。但对用户角度来说,此插桩方式有以下几个缺点: 1 ) 需要程序的源代码 2 ) 编译的限制,大多数插桩工具要么集成到编译器中,要么只是基于一种语言或 中间语言实现,这就限制了一种插桩工具的应用范围。 3 ) 插桩速度,每次插桩都需要重新编译一次应用,这也意味着用户必须熟悉应用 的整个编译过程。 4 ) 插桩范围的限制,库文件由于没有源代码而不能自动插桩,如果要对库文件进 行分析就必须维持一个插桩了的库文件版本。 第二章性能测试工具功能需求及关键技术 虽然源代码级插桩有着以上的缺点,但优点也是非常明显的: 1 ) 源代码级插桩主要优点是插桩过程相对其他插桩方式简单,不需要进行指令分 析和修改,通常利用编译器前端来实现源代码分析,对源代码插桩是通过编辑文 本文件或修改编译器的中间语言表示。 2 ) 大量的源代码结构信息使得插桩能够更为有效,能够使分析结果方便而且充分 对应到源代码上。 3 ) 支持多种处理器,由于这种插桩方式是在编译阶段中进行,插桩过程与处理器 类型无关,所以这种插桩方式能够方便的支持多种处理器环境。 2 3p 七r a c e 跟踪技术 为了方便程序的开发和调试,从u n 的早期版本开始就提供了一种对运行 中的进程进行跟踪和控制的手段,那就是系统调用p 觚c e ( ) 【2 7 1 ,含义就是p r o c e s s t r a c c 。通过p t r a c c o 可以实现一个进程与指定进程挂接,可以动态地读写另一个进 程的内存和寄存器,包括其指令空间、数据空间、堆栈以及所有的寄存器;对于 i 3 8 6 体系结构的p c ,还可以访问和修改1 7 个通用寄存器和i 3 8 7 协处理器的浮点 寄存器;与信号机制( 以及其他手段) 相结合,还可以实现一个迸程在另一个进 程的控制和跟踪下运行的目的。例如在调试程序时常用的断点调试主要就是利用 了p 位啪o ,在l i i l u x 下常用的g n u 调试工具g d b 也是利用这个系统调用实现的。 使用p 吮e ( ) 可以使用户实现对系统调用的侦听和修改【j 引。 揽n d u d e l o n gi 1 1 tp 饥e ( 印啪j 仃a c er e q u e s tr e q u e s t ,p i d jp i d ,v o i d a d d r v o i d 卑d a t a ) ; p 廿a c e 有四个参数: 1 ) r e q u e s t :指示了p 舰c e 要执行操作; 2 ) p i d :指示p 仃a c e 要跟踪的进程: 3 ) a d d r :指示要监控的内存地址; 4 ) d a t a :存放读取出的或者要写入的数据。 r e q u e s t 参数就是指示p 仃a c e 可以执行的操作,是一个枚举类型的变量【2 3 1 。变 量值表示的操作类型如下: 1 ) p tt r a c em e ( p t r a c e t r a c e m e ) 将当前进程设置为停止状态。它通常是 与f o r k 和e x e c 联合使用,有时候也有可能自我追踪的应用程序。对于每一个进程, p tt r a c em e 只能被调用一次。通常的反调试技术都是使用这命令为基础实现 9 电子科技大学硕士学位论文 的。一个信号被发送到正被调试的进程,并将该进程切换到停止状态,在父进程 上下文中调用的p tc o n t u e 和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论