PROFILER 技术总结(三): 利用Perfalyzer 工具测试

简介:

如果我们利用Monte Carlo Profiler测试我们外部的应用程序(非嵌入到平台的程序),你会发现在相关的数据中根本无法观察到我们的应用程序的相关信息,而只会看到在“MODULES”和 “SYMBOLS”中“unknown”名字模块的Hits,这是为什么呢?

经过多方查找原因,原来Monte Carlo Profiler 中“MODULES”和 “SYMBOLS”的名字是从一个嵌入到平台中并存储在ROM中的一张表(其实就是releasedir下的.map文件组成的),从中读出运行程序的SYMBOLS(名称),从而可以识别各个运行程序的名称。其实,profiler是使用这张表把一个地址转化成一个名称,如:0x01234567转化成_ProfileStart。象我们集成到平台的应用程序都有相应的.map文件,profiler就是从中读取相应的信息,一些朋友可能会说,那我们把相关应用的.map文件给我们的平台不就行了,其实这是没有办法实现的,因为Monte Carlo Profiler只会读取存储在平台自身的.map文件,对外部的.map文件它是置之不理。

难道真的没有其他办法了吗?其实不然,还有一种做法可以解决这个问题,而且包含Monte Carlo Profile的功能,并能更好的实现,这个工具就是Perfalyzer。

Perfalyzer工具其实是结合了Monte Carlo Profile和CELOG。Monte Carlo Profile之前我们已经介绍了,我们来说说这个CELOG工具,CELOG是一个数据log工具,它可以记录各种系统数据,并把这些数据存储在celog.clg文件中,我们可以从celog.clg文件中读取我们需要的数据(celog.clg数据的读取等相关内容,我会在下面结合实际介绍)。Perfalyzer是无需要KITL支持,可以独立运行在设备上,无需要与PB交互。现在我们对这个工具做具体的介绍;

 

(一)、准备工作

1、平台的构建

       平台的建设跟前面Monte Carlo Profile构建方法是一致的,区别主要是对Build Option设置,我们设置如下:

其中如下两个选项是必须设置的:

●  Enable Event Tracking During Boot:可以使CELOG可用。

●    Enable Profiling: 这个当然也要。

●    Flush tracked events to Release Directory:这个选项可选可不选,它的功能是可以自动启动CeLog,如果选了这个当我们的平台启动CeLog就跟着启动,celog.clg文件会不断的增大,因而我选择手动启动。这个会在下面的设计中具体说明。

其他选项由于主要因为没有启用KITL无法通过TOOL连接到目标平台,所以在仿真器上弄了个Folded Sharing方便我跟机器通讯。

      之后,就可以Sysgen平台了。



2、一些应用程序的准备

(1)、perfalyzer.exe

这个应用程序存储在这个目录下%_WINCEROOT%\public\common\oak\bin\i386\perfalyzer.exe,我们要把这个perfalyzer.exe这个应用程序拷贝到我们目标机器的RelDir 下面,以我的机器为例:%_WINCEROOT% \PBWorkspaces\Test924\RelDir\Emulator_x86_Release

还有在%_WINCEROOT%\public\common\oak\bin\i386\cedb400.dll这个.dll也拷贝到我们的目标机器上,这样perfalyzer.exe才能运行起来。

(2)、建立一个启动celogflush.exe的快捷方式

如果之前勾选Flush tracked events to Release Directory这一步就可以省略。celogflush.exe这个exe在我们的RelDir下面。快捷方式的建立如下:

83#\Windows\celogflush.exe -buf 0x100000 -time 60000 -n \celog.clg -z 0x00800000 -ui 1

我们可以新建一个文本文件,把上面的代码拷贝进去,然后把它命名为以lnk为后缀的文件,关于快捷方式的创建大家可以参看msdn:http://msdn2.microsoft.com/en-us/library/aa935642.aspx

我们这个是60秒写一次celog。之后我们要把这个CeLog.dll(正常都会有的,如果没有可以到如下目录查找%_WINCEROOT%\PUBLIC\COMMON\OAK\TARGET)和celogflush.exe放到目标机器的Windows(就是上面我们快捷方式上面写的目录,大家也可以通过改上面的快捷方式想放哪就放哪,但记得把CeLog.dll拷贝到同一目录下)目录之下。

(3)、建立一个关闭CeLogFlush的应用程序

       关闭CeLogFlush的应用程序的源代码(CeLogStopFlush.exe)可以在如下目录找到的%_WINCEROOT%\Public\Common\SDK\Samples\CeLog\Flush\Stopflush找到,使用build –c可以生成CeLogStopFlush.exe。这样我们就可以自己启动和关闭Celog了。

(4)、建立一个启动PROFILER的应用程序(ProfileStart)

       我们可以建立一个启动PROFILER的应用程序,在这边我是使用EVC ++4.0来建立这个应用程序,我们可以建立一个WCE Application 应用程序,也是选择“ A simple Windows CE application”。这样就建立了一个应用程序。

       在WINMAIN函数中写入如下代码:

● ProfileStart(200,PROFILE_CELOG);

PROFILE_CELOG)这个模式在帮助文档中是没有说明的,但是可以使用的,它的功能是启动并把PROFILER转到CELOG模式。

(5)、建立一个关闭PROFILER的应用程序(ProfileStop)

       跟建立ProfileStart一样,建立一个工程,在WINMAIN输入如下代码:

●   ProfileStop();

      这样就能顺利的结束PROFILER。记得在工程里面要加入profiler.h头文件,这个头文件可以在如下目录找到:%_WINCEROOT%\PUBLIC\COMMON\OAK\INC

(6)、准备被测试应用程序的.map文件和.exe文件

      生成exe文件的时候要记得同时让它生成map文件,map文件可以让perfalyzer工具找到相应的信息,生成的map文件要放在RelDir目录下。.exe的生成要按照你的平台的bulid属性生成相应的exe文件。Perfalyzer比MONTE CARLO 优势之处就是它可以找reldir目录下的所有.map文件不管是否平台应用程序。

      至此,准备工作已经准备完毕,可以开始使用perfalyzer来测试我们程序的效率了。
 
(二)、开始使用perfalyzer进行具体的测试

      现在我以我们的应用程序TESTMODE作为测试程序,可以开始Attach Device,把平台下载到仿真模拟器中。然后把

●     CeLog.dll和celogflush.exe放到Windows目录下

●     把上面准备工作中的2—6步中的exe文件放到目标机器上

完成以上之后就可以开始进行具体测试了。

1、首先启动celog,双击那个lnk文件,它就会提示如下,这样就会在我的设备目录下生成celog.clg文件


2、双击ProfileStart启动Profiler

3、运行待测试exe

4、等待测试程序运行完成,双击ProfileStop关闭Proflier。

5、之后,可以双击celogstopflush停止celog(如果时间没有1分钟,建议还是一分钟后停止,或者可以改变lnk里面写入时间)

6、把celog.clg拷贝到PC机上,并且放到跟perfalyzer同目录下,

7、进入cmd模式,进入到perfalyzer.exe目录下,运行perfalyzer celog.clg,就会在%_WINCEROOT%\PBWorkspaces\Test924\RelDir\Emulator_x86_Release\Perf目录下生成几个htm文件,这几个文件就记录了测试的结果。

● 这是每个模块的信息:




● 这是每个Symbol的信息:




● 这是每个THREAD的信息:




对以上的信息是不是感觉很熟悉,是不是跟MONTE CARLO 中的MONTE CARLO HIT REPORT很相似。

至此,对于PROFILER的全部相关技术就讲到这里,需要能给大家有启发。


本文转自Walzer博客园博客,原文链接:http://www.cnblogs.com/walzer/archive/2008/02/20/1074522.html,如需转载请自行联系原作者


相关文章
|
17天前
|
测试技术 C语言
网站压力测试工具Siege图文详解
网站压力测试工具Siege图文详解
26 0
|
1月前
|
安全 测试技术
现代软件测试中的自动化技术应用及挑战
在当今数字化时代,软件测试的重要性日益凸显。本文探讨了现代软件测试中自动化技术的应用现状和挑战,分析了自动化测试在提高效率、降低成本、增强可靠性等方面的优势,同时也提出了自动化测试所面临的挑战和解决方案。
|
1月前
|
jenkins 测试技术 持续交付
现代软件测试中的自动化工具与挑战
随着软件开发领域的不断发展,自动化测试工具在测试过程中扮演着越来越重要的角色。本文将探讨现代软件测试中自动化工具的应用及面临的挑战,旨在帮助开发人员和测试人员更好地理解和应对自动化测试中的问题。
|
17天前
|
测试技术 Linux Apache
网站压力测试工具webbench图文详解
网站压力测试工具webbench图文详解
12 0
|
19天前
|
安全 测试技术
深入理解白盒测试:方法、工具与实践
【4月更文挑战第7天】 在软件开发的质量控制过程中,白盒测试是确保代码逻辑正确性的关键步骤。不同于黑盒测试关注于功能和系统的外部行为,白盒测试深入到程序内部,检验程序结构和内部逻辑的正确性。本文将探讨白盒测试的核心技术,包括控制流测试、数据流测试以及静态分析等方法,同时介绍当前流行的白盒测试工具,并讨论如何在实际项目中有效实施白盒测试。文章的目标是为软件测试工程师提供一份综合性指南,帮助他们更好地理解和应用白盒测试技术。
|
25天前
|
Java 测试技术 API
软件测试中的自动化工具与策略
软件测试是确保软件质量的重要环节,而自动化测试工具和策略的应用在提高测试效率和准确性方面发挥着重要作用。本文将介绍几种常见的自动化测试工具,并探讨在软件测试中应用自动化测试的最佳实践和策略。
|
27天前
|
Web App开发 Java 测试技术
深入理解与应用软件自动化测试工具Selenium
随着软件开发的快速发展,软件测试在保证产品质量方面发挥着越来越重要的作用。其中,自动化测试以其效率高、成本低的特点受到了广大开发者的欢迎。本文主要介绍了自动化测试工具Selenium的基本概念、原理以及在实际开发中的应用,旨在帮助读者更好地理解和使用Selenium进行高效的自动化测试。
22 4
|
1月前
|
人工智能 测试技术 虚拟化
现代软件测试中的自动化工具与技术
随着信息技术的迅猛发展,现代软件开发和测试领域也在不断创新。本文将探讨现代软件测试中自动化工具与技术的应用。通过分析自动化测试的优势、挑战以及最佳实践,帮助读者更好地理解当前软件测试领域的发展趋势,并为实际工作提供参考。
19 1
|
1月前
|
JavaScript jenkins 测试技术
这10款性能测试工具,收藏起来,测试人的工具箱!
这10款性能测试工具,收藏起来,测试人的工具箱!
|
1月前
|
人工智能 监控 测试技术
利用AI辅助工具提升软件测试效率
【2月更文挑战第17天】 随着科技的不断发展,人工智能(AI)在各个领域的应用越来越广泛。在软件测试领域,AI技术也发挥着重要作用。本文将探讨如何利用AI辅助工具提升软件测试效率,包括自动化测试、智能缺陷识别和预测等方面。通过引入AI技术,软件测试过程将变得更加高效、准确和可靠。
194 1

热门文章

最新文章