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,如需转载请自行联系原作者


相关文章
|
22天前
|
数据采集 监控 机器人
浅谈网页端IM技术及相关测试方法实践(包括WebSocket性能测试)
最开始转转的客服系统体系如IM、工单以及机器人等都是使用第三方的产品。但第三方产品对于转转的业务,以及客服的效率等都产生了诸多限制,所以我们决定自研替换第三方系统。下面主要分享一下网页端IM技术及相关测试方法,我们先从了解IM系统和WebSocket开始。
40 4
|
24天前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
1月前
|
前端开发 JavaScript 测试技术
前端测试技术中,如何提高集成测试的效率?
前端测试技术中,如何提高集成测试的效率?
|
17天前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
115 17
Selenium:强大的 Web 自动化测试工具
|
27天前
|
机器学习/深度学习 人工智能 算法
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
BALROG 是一款用于评估大型语言模型(LLMs)和视觉语言模型(VLMs)在复杂动态环境中推理能力的基准测试工具。它通过一系列挑战性的游戏环境,如 NetHack,测试模型的规划、空间推理和探索能力。BALROG 提供了一个开放且细粒度的评估框架,推动了自主代理研究的进展。
39 3
BALROG:基准测试工具,用于评估 LLMs 和 VLMs 在复杂动态环境中的推理能力
|
1月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
49 2
|
1月前
|
安全 网络协议 关系型数据库
最好用的17个渗透测试工具
渗透测试是安全人员为防止恶意黑客利用系统漏洞而进行的操作。本文介绍了17款业内常用的渗透测试工具,涵盖网络发现、无线评估、Web应用测试、SQL注入等多个领域,包括Nmap、Aircrack-ng、Burp Suite、OWASP ZAP等,既有免费开源工具,也有付费专业软件,适用于不同需求的安全专家。
189 2
|
1月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
1月前
|
数据采集 前端开发 安全
前端测试技术
前端测试是确保前端应用程序质量和性能的重要环节,涵盖了多种技术和方法
|
9天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
50 11

热门文章

最新文章