VS 下环境覆盖率测试

1. 安装VS enterprise版试了。安装好后,相应的工具貌似就都装好了。

2. 开始插桩dll:
这几个可执行文件都在 C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools\x64
Batch代码 收藏代码
vsinstr /coverage D:\shary\V2017_publish\nclibd.dll
注意:a. nclibd.dll是待测的dll文件
b. 需要编译时同时生成pdb文件
c. 需要编译时打开link的/profile选项
若成功,会有如下信息:
已将原始文件备份到 D:\shary\V2017_publish\nclibd.dll.orig
已成功检测了文件 D:\shary\V2017_publish\nclibd.dll

3. 开始监控:
Batch代码 收藏代码
vsperfcmd /start:coverage /output:c:\test\sample.coverage 


或者可用
start vsperfmon -coverage -output:"D:\a.coverage"

会显示:

在独立模式下启动
文件名: d:\a.coverage

4. 这时可以使用各种测试方法调用待测dll进行测试,覆盖率都会统计到上面的output文件中。

5. 终止监控
Batch代码 收藏代码
vsperfcmd /shutdown  

所有数据已经都写入文件,不过只能用VS打开。但是前面所有操作都可以不打开VS执行。

另外:
/Profile 选项设置:
首先,打开您需要测试的程序的解决方案或项目文件,需要说明的是被测试的程序的设置。推荐您使用Debug的编译模式,如果您使用的是Release的编译模式,程序将无法分析出函数的符号。请您在VS中点击Project->Properties->Configuration Properties->Linker->Command Line,在右侧Additional options中填入/Profile,(即 连接器->命令行->其他选项, 手动加入/Profile 参数),代表您告诉链接器Linker,此程序需要被用于VS Profiler。新手非常需要注意的是,当程序性能调优完成后,您需要去掉这个添加的选项,使用Release编译链接生成可以发布的程序。


6. 打开文件“d:\a.coverage”后,可以通过VS查看结果。可以通过全局函数来查看所调用的接口。


问题1:
run -> C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools\x64>vsinstr /coverage "D:\shary\NMTCLIB_Stand\bin\nclibd.dll" 报错如下:
错误 VSP1033: 文件“D:\shary\NMTCLIB_Stand\bin\nclibd.dll”中不包含可识别的可执行文件映像


7. 用批处理将上面的流程自动化:

@set localFolder=D:\shary\NMTCLIB_Stand\bin\
@set nclibFolder=\\192.168.1.110\test\nclib\20170516

@set codetrunkpath=%localFolder%/../
@set VStools="C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools\x64"

@copy %nclibFolder% %localFolder% /y

@cd /d %VStools%
vsinstr /coverage "%localFolder%\nclibd.dll"
vsperfcmd /start:coverage /output:%localFolder%\unittest.coverage

@goto MSBUILD

:MSBUILD
call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" amd64
msbuild %codetrunkpath%Test\NCLibTestFramework\code\NCLibUnitTest.sln /t:rebuild /p:Configuration=Release /p:platform=x64 /m
%codetrunkpath%bin\NCLibUnitTest.exe --gtest_filter=*regression* > %codetrunkpath%NCLIB.log


因为build时间比较长,所以不能将最后的shutdown放入batch里面,需要单独shutdown。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值