AQTime 使用详解
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AQTime教程
谢谢大家下载
1 简介
AQTime和MemProof都是AutomatedQA旗下的产品,AQTime比MemProof提供了更丰富强大的功能。该产品含有完整的性能和调试工具集,能够收集程序运行时关键的性能信息和内存/资源分配信息,并提交概要报告和详细报告,还提供所有的程序优化处理工具,囊括了自定义过滤器、图形化的调用层次结构一直到源代码浏览等内容。AQTime的特色在于它不仅是一款调试工具,还是一款性能优化工具。另外,还支持与基于SCC API的版本控制软件集成使用。
2 使用方法
本文只针对DELPHI,其他开发语言可以参照。
2.1 下载
AQTime是一个商业软件,你可以在官方网站上下载试用版本:
下载地址:/products/aqtime/index.asp
本文使用的是AQTime 4.92 版本
2.2 安装
直接运行安装即可
2.3 准备
和MemProof一样,要求目标程序带有完整的调试信息。打开工程选项(Project-Options)
1、 Compiler面板
l 去掉Optimization(代码优化)选项
l 选择Stack Frames(为所有过程函数强制生成调用堆栈)选项
l 选择Debug information (在DCU文件中生成调试信息)选项
2、Linker面板
l 选择Detailed(生成完整的MAP文件,包含模块、单元、过程等地址信息)选项
l 选择Include TD32 debug info(将调试信息生成到可执行文件)选项该选项会导致可执行文件体积增大,但不会影响运行效率以及内存占用,建议在正式发布时不要带上该选项。
3、Packages面板
如果希望使用Allocation profiler (资源分配测试方案)
去掉 Build with runtime packages
也可以不去掉该选项,但是必须使用Add Moudle把下列BPL添加进来:
VCL50.BPL - Delphi 5.
RTL60.BPL - Delphi 6.
RTL70.BPL - Delphi 7.
RTL90.BPL - Delphi 2005 for Win32.
2.4 面板简介
Event View -事件浏览,查看运行过程中的事件
Moniter -监视面板,监视运行期间各个模块的内存使用情况Disassembler -汇编代码面板,查看汇编代码
Editor -代码浏览窗口,如果无法浏览代码,会出现路径配置,选择
好代码的路径即可浏览
Details -详细信息窗口,查看比报告中更详细的内容
Call Graphic -图表方式显示方法调用情况
Call Tree -树方式显示方法调用情况
PE Reader - PE文件浏览窗口
2.5 开始
选择File-New Project From Moudle 打开待测试的程序,选择一种测试方案开始测试。AQTime共有五个大类共八种不同的测试方案,下面一一介绍:
2.5.1 Allocation(资源测试)
测试资源分配释放情况,检查内存泄漏。共有两个测试方案:Allocation Profiler(内存使用剖析)和 Resource profiler(系统资源使用监测)
2.5.1.1 Allocation Profiler(内存使用剖析)
2.5.1.1.1 说明
跟踪程序执行过程中对内存资源的使用情况,按类、对象检测并显示程序中对内存资源使用情况,确定明显或潜在的内存泄露来源, 避免由此造成的程序崩溃。AQTime会跟踪TObject继承下来的对象的创建和删除,以及通过内存管理函数
· GetMem, ReallocMem, FreeMem
· GetMemory, ReallocMemory, FreeMemory
· SysGetMem, SysReallocMem, SysFreeMem
分配和释放的内存。
注意:这个方案不会跟踪使用WINAPI创建和释放的内存
2.5.1.1.2 测试结果报告
测试结果报告中有类和对象两种统计报告:
类统计报告:
Class Name Total Created Live Count Live Size Total Size
TFont 8 1 36 288
Class Name -类名称,如果是通过内存管理函数分配的内存类名为:VCL native memory,如果选择了Check Memory Bounds(内存边界检查),类名也有可能为:Memory Overwrite Error
Total Created -程序运行期间创建的内存总数目
Live Count -当前还有多少数目内存未释放
Live Size -当前还有多大内存未释放
Total Size -程序运行期间创建的内存总大小
对象统计报告:
Object Name Size Root References To Address Get#
TFont.503 60 False 0 0x02CA1D9C 1
Object Name -对象名称,对象名称的命名规则为:Class Name + period + number,如:TFont.503 代表:第503个被创建的TFont对象。
Size -内存泄漏的大小
Root -为True代表对象可能属于一个全局变量、本地变量或者函数的参数;为False代表对象是另一个对象的属性
References To -当前对象共关联了多少个其他对象
Address -对象地址
Get# -当运行过程中使用了Run-Get Results手工获取报告时,Get#代表当前报告属于第几次Get Results所获得的报告。(笔者多次使用Get Results后,所有结果依然为1,奇怪~~)
2.5.1.2 Resource profiler(系统资源使用监测)
2.5.1.2.1 说明
跟踪程序运行期间,对操作系统资源(如fonts, brushes, bitmaps, and other graphic components, registry, COM obj ects, print spooler, etc.)的使用情况(如某时间片内,程序本身开销的系统资源、因这些资源带来的内存和CPU开销、来自于这些资源使用中出现的错误)使检测者很容易获知在程序运行期间与之相关系统资源的分配和使用情况。
2.5.1.2.2 测试结果报告