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


相关文章
|
24天前
|
存储 监控 网络协议
服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
【10月更文挑战第11天】服务器压力测试是一种评估系统在极端条件下的表现和稳定性的技术
97 32
|
5天前
|
前端开发 JavaScript 测试技术
前端小白逆袭之路:如何快速掌握前端测试技术,确保代码质量无忧!
【10月更文挑战第30天】前端开发技术迭代迅速,新手如何快速掌握前端测试以确保代码质量?本文将介绍前端测试的基础知识,包括单元测试、集成测试和端到端测试,以及常用的测试工具如Jest、Mocha、Cypress等。通过实践和学习,你也能成为前端测试高手。
20 3
|
8天前
|
Web App开发 定位技术 iOS开发
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
Playwright 是一个强大的工具,用于在各种浏览器上测试应用,并模拟真实设备如手机和平板。通过配置 `playwright.devices`,可以轻松模拟不同设备的用户代理、屏幕尺寸、视口等特性。此外,Playwright 还支持模拟地理位置、区域设置、时区、权限(如通知)和配色方案,使测试更加全面和真实。例如,可以在配置文件中设置全局的区域设置和时区,然后在特定测试中进行覆盖。同时,还可以动态更改地理位置和媒体类型,以适应不同的测试需求。
16 1
|
9天前
|
编解码 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(10-2):保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali——Liinux-Debian:就怕你学成黑客啦!)作者——LJS
保姆级别教会你如何搭建白帽黑客渗透测试系统环境Kali以及常见的报错及对应解决方案、常用Kali功能简便化以及详解如何具体实现
|
23天前
|
jenkins 测试技术 持续交付
提升软件测试效率的实用技巧与工具
【10月更文挑战第12天】 本文将深入探讨如何通过优化测试流程、引入自动化工具和持续集成等策略,来显著提高软件测试的效率。我们将分享一些实用的技巧和工具,帮助测试人员更高效地发现和定位问题,确保软件质量。
41 2
|
9天前
|
人工智能 安全 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(4-2):渗透测试行业术语扫盲完结:就怕你学成黑客啦!)作者——LJS
|
9天前
|
安全 大数据 Linux
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(3-2):渗透测试行业术语扫盲)作者——LJS
|
9天前
|
SQL 安全 网络协议
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS
网络空间安全之一个WH的超前沿全栈技术深入学习之路(1-2):渗透测试行业术语扫盲)作者——LJS
|
26天前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
49 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
214 7
Jmeter实现WebSocket协议的接口测试方法