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代码 收藏代码
或者可用
会显示:
在独立模式下启动
文件名: d:\a.coverage
4. 这时可以使用各种测试方法调用待测dll进行测试,覆盖率都会统计到上面的output文件中。
5. 终止监控
Batch代码 收藏代码
所有数据已经都写入文件,不过只能用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. 用批处理将上面的流程自动化:
因为build时间比较长,所以不能将最后的shutdown放入batch里面,需要单独shutdown。
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。