Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 是否有一种方法可以输出本机C+;的代码覆盖率文件+;每次在VS2012中运行应用程序时?_C++_Visual Studio 2012_Code Coverage - Fatal编程技术网

C++ 是否有一种方法可以输出本机C+;的代码覆盖率文件+;每次在VS2012中运行应用程序时?

C++ 是否有一种方法可以输出本机C+;的代码覆盖率文件+;每次在VS2012中运行应用程序时?,c++,visual-studio-2012,code-coverage,C++,Visual Studio 2012,Code Coverage,我目前正在查看代码的覆盖范围,我需要一个.coverage文件来查看它。我已经找到了如何通过这个检索本地C++的覆盖文件。 它们按照以下步骤输出.coverage文件: 首先,必须使用/PROFILE链接选项编译项目。如果调出项目属性,可以在以下位置找到: 配置属性->链接器->高级->配置文件 然后可以在以下目录中找到探查器工具: C:\Program Files\Microsoft Visual Studio 9.0\Team Tools\Performance Tools 您需要向EXE或

我目前正在查看代码的覆盖范围,我需要一个.coverage文件来查看它。我已经找到了如何通过这个

检索本地C++的覆盖文件。 它们按照以下步骤输出.coverage文件:

  • 首先,必须使用/PROFILE链接选项编译项目。如果调出项目属性,可以在以下位置找到: 配置属性->链接器->高级->配置文件

  • 然后可以在以下目录中找到探查器工具: C:\Program Files\Microsoft Visual Studio 9.0\Team Tools\Performance Tools

  • 您需要向EXE或DLL文件中添加一些检测代码,这是通过以下命令完成的: vsinstr.exe/COVERAGE

  • 这将把原始文件复制到一个“.orig”-文件,并用原始名称创建一个新文件,该文件包含收集覆盖率数据所需的检测代码。 现在使用以下命令启动侦听器: VSPerfMon.exe/COVERAGE/OUTPUT:

  • 现在运行EXE或使用要计算覆盖率的文件的测试套件

  • 一旦测试套件完成,在步骤四(4)中启动的侦听器不会自行停止,因此您必须使用此命令(从第二个命令提示符)手动停止: VSPerfCmd.exe/SHUTDOWN

  • 当侦听器停止时,只需将创建的“.coverage”-文件拖放到Visual Studio中,即可查看结果


  • 我想知道是否有一种方法可以自动执行此操作,以便此工具在每次运行程序时将.coverage文件输出到同一位置。这将使获得我的代码覆盖率更加容易和快速。有人知道如何在Visual Studio 2012中用任何C++程序运行吗?< /P> VS 2012有一个新的覆盖工具,不需要任何这些步骤。新工具的唯一要求是,在收集覆盖率数据时,.pdb文件需要是可发现的(以前是用于检测和分析的)。看看我对这件事的看法。谢谢你的回复!我试着使用CodeCoverage.exe的collect命令,结果它的用法一塌糊涂。然后我运行了这个程序,它成功地完成了,我在Windows资源管理器中检查了输出位置,但它没有输出.coverage文件。我做错了什么吗?输出开关应该与CWD相关,因此如果您执行了
    CodeCoverage.exe收集/输出:foo.coverage foo.exe
    ,您应该可以在运行命令的目录中立即看到该文件。它是在收集开始时创建的,但覆盖率数据只在特定时间刷新到磁盘(如关闭收集)。注意,与旧的覆盖工具不同,没有“工具”步骤;collect命令运行您给它的程序,并在收集过程中动态插入它。嗯,我正在与Visual Studio相同的工作目录中运行该命令(右键单击项目文件夹->在命令提示符下打开),并运行该确切的命令(除了我的.exe文件),而我没有收到任何.coverage文件。我正在使用更新3运行VS2012,更新3是否与CodeOverage工具兼容?我不明白为什么我不能让它工作。另外,感谢您尝试帮助我。鉴于您不能在程序文件下写入任何内容,除非您在提升的上下文中运行,我猜是由于文件系统虚拟化,覆盖率文件被重定向。我将为输出选项提供一个完整路径,该路径指向用户可以写入的目录。