如何使用Visual Studio检测和获取Windows服务的代码覆盖率?
How to instrument and get code coverage of a Windows service with Visual Studio?
我正在尝试使用Visual Studio 2012 Premium工具获取用C++编写的Windows服务的代码覆盖率(我们称之为hello.exe)。到目前为止,我已经尝试使用本文答案中概述的方法:如何在命令行中使用MS代码覆盖率工具?
为方便起见,给出的步骤是运行:
- vsinstr/coverage 你好.exe
- start vsperfmon/coverage/output:mytestrun.coverage
- 你好.exe
- vsperfcmd/shutdown
当我在命令提示符下将其作为可执行文件启动时,我能够检测、测试和获取 .coverage 文件.exe没有问题。但是,如果我尝试在步骤 3 中将其作为服务启动(通过 services.msc 手动或 win32serviceutil。Python中的StartService),没有任何注册,覆盖文件为空。我在这里缺少什么吗?
额外信息:为了解决这个问题,我遇到了另一个代码覆盖实用程序,称为CodeCoverage.exe(Microsoft Visual Studio 11.0\Team Tools\Dynamic Code Coverage Tools)。这就是我应该用于此任务的内容吗?另外,我在这里发现了一些看似相关的东西 https://msdn.microsoft.com/en-us/library/dd255408.aspx,但是(原谅我的无知)不确定.NET服务是否与Windows服务相同。
在这里回答我自己的问题,经过大量的尝试和翻阅文档,我发现:
https://blogs.msdn.microsoft.com/hilliao/2008/08/19/code-coverage-using-visual-studio-2008s-code-coverage-tools/
基本上,Windows 服务与进程不同,因此我们必须启用跨会话标志并在监视时指定用户。
start vsperfmon /coverage /output:mytestrun.coverage /cs /user:”Everyone”
因此,只需像往常一样检测 exe,使用上述命令开始监视,启动服务,执行测试,停止服务并关闭监视。
希望它在未来对某人有所帮助。
- Active Directory:从网络服务帐户下运行的Windows服务调用ADsOpenObject时失败
- Windows 后台服务(系统配置文件)无法使用 C++ 访问 win 10 上的用户 appData 文件夹?
- 在 Windows 服务中使用命名管道时出现问题
- Windows 服务在启动时不进入_tmain
- 名为DLL的C++windows服务程序工作不正常
- ImpersonateLoggedOnUser在windows服务中不工作
- 如何读取windows服务启动的控制台应用程序的输出
- 将 Visual C++ 6 控制台应用程序作为 Windows 服务运行
- 无法从C++ Windows 服务执行批处理文件
- 使用 Windows 防火墙 API 限制服务,找不到服务短名称
- 从C++ Windows 服务中获取当前登录的用户名
- LG电视通过串行使用Windows服务在PC开机后运行约30秒 - 如何更快地启动服务
- 从Windows服务打印
- 如何使用Visual Studio检测和获取Windows服务的代码覆盖率?
- 如何从 Windows 上的服务在未登录用户的桌面上启动应用程序
- QCoreApplication事件循环和Windows服务控制处理程序功能
- Windows 服务启动的超时值是多少
- Windows 生物识别服务在调用 WinBioCaptureSample 时循环运行 SensorAdapterSta
- 使用 NamedPipe 访问 Windows 服务之间的安全性
- 从Windows上的系统工作的服务中获取用户文档文件夹.C++