AQtime代码覆盖率深度分析之二
来源:互联网 发布:arashi smap 地位知乎 编辑:程序博客网 时间:2024/05/17 00:07
AQtime的Coverage Profiler有一些不错的特性,能方便我们更好的进行代码覆盖率的检测。
New Area和 Files to Ignore
当目标module被加进来是,AQtime会以树形结构,把module的对象层次图显示出来,如c/c++的dll,就会dll-->obj-->API三个层次。如果我们只想对特定的obj文件进行profile,或者排除编译时编译工具加入了自己的obj文件(因为这些obj文件会影响最终的结果,也无需对他们进行profile),就需要用到New Area这个功能:
展开dll到obj这个层次的视图,选中自己的obj文件,右键-->Add Selected to Area-->Add to New Area...,这样就可以按line level或routine level,只针对自己想要obj文件,也就是只profile完全是自己程序的代码。记得只选中新建的这个area。
同时,如果这些你的程序中也调用了其他人写的函数库,可以找到这些函数库文件的完整路径名,在AQtime的菜单栏Options-->Files to Ignore...,把他们加入到需要忽略的文件列表中。注意,这里是一个全局选项,对所有的project都有效的。这里加的文件越多,AQtime启动coverage profile所需的时间就越长,甚至会造成假死的现象。
通过建New Area和Files to Ignore选项,就可以只针对特定的代码进行coverage profile。
Mark partially executed lines as
AQtime提供一个选项,叫做"Mark partially executed lines",该选项的值设置不同,会影响到最终的line coverage的结果。默认情况下,AQtime是把该选项设为"Partially executed (yellow dot)"的。选择Add or Remove Buttons-->Customize-->Commands,可以把该选项显示的添加到AQtime的菜单栏。
为什么该选项的值不同会影响line coverage的结果呢?因为对于if(condition1 || condition2)等这样的语句,AQtime会根据该选项的值,认为该行具有1个还是2个hit block。
First chance exception 0xxxxx
当设置好工程后,执行coverage profile任务,在event view中,可以看到一些"First chance exception ...."的信息,并且前面有个大红叉。给人第一感觉就会怀疑是否程序中有重大的问题。其实通常情况下不是这样的,它是告诉我们有一个异常被引发并且被处理了,具体可见http://blogs.msdn.com/b/davidklinems/archive/2005/07/12/438061.aspx
Merge
AQtime提供对结果的merge功能,一是可以对不同的测试任务的coverage进行集成,二则对于AQtime本身而言,个人任务意义更为巨大,因为AQtime对一个比较大一点的,时间比较长的任务,有时候会crash,这个时候就很悲催了。这种情况下,我们最好把大的,时间长的任务分割为几个比较小的,分别执行,最后在合并。在合并之前,最好copy一份保存有结果的工程。如果在合并的时候,还是出现了crash的对话框,千万不要选择“terminate the application..."这个选项,否则会因为debug info的丢失,所有的之前profile的结果都没有了。
Top 10 uncovered routines
在summary中,总的和每个thread都有一个"Top 10 uncovered routines"和"Routines with max HitCount",”Routines with max HitCount"好理解,就是比较谁hit的次数多;但是对于uncovered,就有些费解,开始以为是AQtime基于代码的静态分析函数调用关系得出的,问了AQtime support的人,结果完全不是这样的。AQtime会根据coverage的百分比进行自动排序,hit最高的当然就是max hitcount了,而"Top 10 uncovered",则是hitcount都为0的routine中,随机产生的。
- AQtime代码覆盖率深度分析之二
- AQtime代码覆盖率深度分析之一
- AQTime切换代码覆盖率和效率模式
- PHP 代码覆盖率分析
- 代码覆盖率分析
- 代码覆盖率分析
- 代码覆盖率分析
- AQtime使用简介-覆盖率测试方法
- 代码覆盖率分析(gcov)
- 性能分析工具AQTime
- Jacoco & Cobertura代码覆盖率分析对比
- Spring中的@Transactional深度分析之二
- Spring中的@Transactional深度分析之二
- recovery代码分析之二
- recovery代码分析之二
- Java单元测试之代码覆盖率-JaCoCo
- 代码覆盖率
- 代码覆盖率
- vi/Vim + Cscope/Ctags
- C# 中Random函数
- android tab的使用
- Android 之 Window、WindowManager 与窗口管理
- CMap的用法
- AQtime代码覆盖率深度分析之二
- 关于hadoop namenode -format不成功的问题
- 将tomcat注册为服务linux
- h头文件 .lib库文件 .dll动态链接库文件关系
- C#私有构造函数
- MTK无效链接类型问题解决方式
- 查看服务器上安装的nginx版本号
- Java多线程Synchronized心得
- 查询内并行度导致服务器命令(进程 ID #66)死锁。请重新运行该查询,并在查询中用查询暗示选项 (maxdop 1) 去掉查询内并行度