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


相关文章
|
6月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
5月前
|
机器学习/深度学习 人工智能 测试技术
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
EdgeMark是一个面向嵌入式AI的自动化部署与基准测试系统,支持TensorFlow Lite Micro、Edge Impulse等主流工具,通过模块化架构实现模型生成、优化、转换与部署全流程自动化,并提供跨平台性能对比,助力开发者在资源受限设备上高效选择与部署AI模型。
497 9
EdgeMark:嵌入式人工智能工具的自动化与基准测试系统——论文阅读
|
5月前
|
Java 测试技术 API
自动化测试工具集成及实践
自动化测试用例的覆盖度及关键点最佳实践、自动化测试工具、集成方法、自动化脚本编写等(兼容多语言(Java、Python、Go、C++、C#等)、多框架(Spring、React、Vue等))
289 6
|
5月前
|
人工智能 Java 测试技术
单元测试覆盖率的自动控制技术
Jacoco是Java程序覆盖率工具,可以在pom.xml通过配置来自动控制程序的覆盖率
140 5
|
6月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
1330 10
|
6月前
|
人工智能 资源调度 jenkins
精准化回归测试:大厂实践与技术落地解析
在高频迭代时代,全量回归测试成本高、效率低,常导致关键 bug 漏测。精准化测试通过代码变更影响分析,智能筛选高价值用例,显著提升测试效率与缺陷捕获率,实现降本增效。已被阿里、京东、腾讯等大厂成功落地,成为质量保障的新趋势。
|
6月前
|
监控 Java 数据挖掘
利用Jmeter工具进行HTTP接口的性能测试操作
基础上述步骤反复迭代调整直至满足预期目标达成满意水平结束本轮压力评估周期进入常态监控阶段持续关注系统运转状态及时发现处理新出现问题保障服务稳定高效运作
893 0
|
7月前
|
敏捷开发 运维 数据可视化
DevOps看板工具中的协作功能:如何打破开发、测试与运维之间的沟通壁垒
在DevOps实践中,看板工具通过可视化任务管理和自动化流程,提升开发与运维团队的协作效率。它支持敏捷开发、持续交付,助力团队高效应对需求变化,实现跨职能协作与流程优化。
|
7月前
|
人工智能 数据可视化 测试技术
UAT测试排程工具深度解析:让验收测试不再失控,项目稳稳上线
在系统交付节奏加快的背景下,“测试节奏混乱”已成为项目延期的主因之一。UAT测试排程工具应运而生,帮助团队结构化拆解任务、清晰分配责任、实时掌控进度,打通需求、测试、开发三方协作闭环,提升测试效率与质量。本文还盘点了2025年热门UAT工具,助力团队选型落地,告别靠表格和群聊推进测试的低效方式,实现有节奏、有章法的测试管理。
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。