问题标签 [vsperfmon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3547 浏览

visual-studio - can't start visual studio profiler

I have VS 2010 Ultimate. I have created empty win32 console solution and replaced it's cpp file with http://pastebin.com/EQJKJK6T I tried to perform CPU Sampling profiling. But for some reason I get the following messages

MessageBox:

Could not launch 'path to exe file'. Previous attempt to profile the application finished unsuccessfully. Please restart the application.

Output window:

0 投票
1 回答
3598 浏览

visual-studio-2010 - 为什么我不能通过附加到 dllhost.exe 来使用 vsperfmon 进行分析?

我有一个本机 C++ 项目,它使用 COM 与 VB.NET 中的单独项目进行通信。过去,通过将项目附加到引用本机 dll 的单独 exe,我已经能够成功地分析本机项目。我现在正在尝试通过连接到 dllhost.exe 来分析本机项目。此配置有效,因为我可以通过 dllhost 进行调试,但是如果我尝试分析代码(或者只是在调试时将分析器附加到 dllhost),分析器将停止并且我得到以下输出:

我知道探查器可以工作,因为我可以使用不同的配置获得结果。我也知道调试配置有效。知道出了什么问题吗?

0 投票
1 回答
447 浏览

c++ - 为什么 vsperfmon 告诉我被调用函数的包含时间比根函数的时间长?

因此,我一直在使用 VS 2010 通过 vsperfreport/vsperfcmd 命令行工具对 vsperfmon 进行试验。我构建了一个非常简单的程序来分析并尝试了解这些工具输出的数字:

我通过在命令行运行此处详述的步骤来分析可执行文件。以上被编译为 perfPlay.exe,然后我执行以下步骤:

这是我无法弄清楚的奇怪之处。在函数和调用者/被调用者报告中,DoStuff的已包含时间小于sin() 的包含时间:这是 DoStuff() 的调用者/被调用者报告,请注意 THUNK:sin 与 Root 函数的已包含时间

已用包含时间定义为执行函数中的代码(包括调用的函数)所花费的时间。根据该定义,DoStuff 的包含时间应始终 > 包含罪的时间。上面的差异是比较小的,但是如果我让这个东西运行一段时间它会变得更大。这种差异在调试和发布模式中都存在。

为什么罪的包容时间更长?我希望它代表根条目时间的一部分。我不太确定发生了什么,或者即使我可以信任这个工具,如果它做看似奇怪的事情。我怀疑我只是错过了一些能让我更清楚的东西。

0 投票
1 回答
889 浏览

c++ - VSPerf VS2010 和其他分析工具没有拾取 pdb

尝试使用 VSPerfCmd(VS2010 分析器)以及 Intel VTune Amplifier XE 2013 进行分析:对于 .vsp 文件中的 VsPerfCmd,可以获得一些结果。但是,profer 没有选择 pdb。应用程序的某些部分没有可用的代码。

这是否已经发生在您身上,您是否知道是否应该打开某些编译器选项以获得完整的配置文件?

profiler 在哪个目录中查找 .pdb 信息?

谢谢

0 投票
1 回答
1375 浏览

visual-studio - 使用 Powershell 自动化 VSPerfCmd.exe(Visual Studio 性能分析)

因为这个问题是我试图解决更大的问题,所以我在下面的帖子中包含了重要的背景和调查历史。因此,我将帖子分为 3 个部分:“背景”、“迄今为止的调查”和“问题”。当我自己进行更多调查时,我还添加了一个“额外调查”部分来扩展我的发现。这最终导致我自己解决了这个问题,并且我已经将原始帖子作为任何尝试做同样事情的开发人员的指南。该问题最终成为 VSPerfCmd.exe 在 v1 之后的 Powershell 版本中的控制权返回问题。

  1. 背景

作为我的 TFS 构建(包括自动部署到我的开发 Web 服务器 DEV)的一部分,我想开始并运行我的代码的性能测试,以便我可以看到新的更改何时会对我的 API 的速度产生负面影响。为此,我在 DEV 上安装了一个测试运行程序 (SoapUI) 和 VS Team Tools,并编写了一个 Powershell 脚本,当在 DEV 上本地运行时,它会生成我想要的报告。但是,我还没有能够触发该脚本并让它在任何其他位置工作。我的意思是,只有登录服务器,找到 .ps1 文件并在 Powershell 中运行它才能工作。这是那个脚本:

正如我所说,如果我自己在 DEV 上手动运行它,上述工作正常,但我试图触发它,但它不能正常工作。

  1. 迄今为止的调查

以上似乎确实触发了脚本,但我遇到了一些奇怪的问题。首先,脚本是在我执行脚本的机器上调用的(我的用于测试,TFS 构建服务器用于自动部署),而不是我期望的在 DEV 上。这可能是我对 powershell 的误解和一个足够简单的修复 - 所有这些意味着,除非我将脚本复制到我正在测试的网络机器(我自己的或 TFS 构建服务器)powershell 只是 barfs a directory not found 错误甚至在击中脚本之前。其次,即使我在尝试触发它的机器上安装了脚本(它确实找到了脚本并开始执行),它也只会到达输出“开始跟踪......”,然后是一些有关 vsperfcmd 的信息。

它挂在那里,我认为调用没有完全执行,因为我必须摆脱它。我已经让它运行了很长一段时间(20 多分钟,本地需要几秒钟才能超过这一点),但它从未继续超过这一点。在本地运行该位置的脚本输出如下所示:

  1. 问题

这让我相信问题线是

事实上,当我运行一个大大缩短的脚本来测试这个假设时,我能够验证执行该命令后控制永远不会返回到 shell - 下面是我运行以确认这一点的脚本及其输出:

在该命令之后什么都不会打印。有一段时间,我认为这一定意味着应用程序或 DEV 服务器出现问题,阻止它正确访问 vsperfcmd,但我检查了 DEV 任务管理器,发现VSPerfMon.exe 确实出现在进程列表中我运行命令并在我 ctrl+break 时停止。因此,该命令似乎正在工作,至少在某种程度上,它只是没有返回控制权,因此可以执行脚本的下一部分。

所以,我的问题是,我怎样才能让它工作?为什么执行启动配置文件监视器的命令后控制不返回?这是从 TFS 自动部署构建后进行性能分析的最佳方法吗?(见下文更新)

  1. 额外调查

自从发布以来,我一直在自己进行调查,并学到了一些有趣的东西。首先,我应该注意到 DEV 服务器上的 powershell 版本已经过时(我没有意识到),所以我将它更新到版本 3。一旦我尝试在 powershell ISE 中的 powershellV3 上本地运行脚本,我意识到它挂起的方式与我尝试远程运行脚本时完全相同。只有当我通过右键单击命令“使用 powershell 运行”运行脚本时,我意识到调用 powershellV1 的脚本才能工作。不同版本的 powershell 处理我的脚本的方式似乎存在明显差异。

修改后的问题:为什么脚本在 powershellV1 而不是 V3 中工作?为什么 V3 在 \start:trace 之后挂起,而 V1 没有?当直到 V2 才引入 powershell 会话时,我如何获得网络执行以使用 V1 运行脚本?

0 投票
1 回答
673 浏览

visual-studio - 错误 VSP1737:由于共享冲突而无法打开文件

在使用 Team Foundation Server (TFS) 运行性能和诊断会话时,我在 Visual Studio 2013 Ultimate 中遇到错误。以下是重现的步骤:

  1. 从 Team Foundation Server 获取最新信息。
  2. 创建“CPU 采样”方法的新性能会话。
  3. 启动新创建的性能会话。
  4. 通过关闭 Internet Explorer 或单击“停止分析”退出会话后。

然后我会在输出窗口中得到以下错误。

为了摆脱这个错误,我必须清除 TFS 设置的解决方案文件夹的只读属性。如果我清除只读属性,则 TFS 无法使用 TFS 服务器检测我的本地工作区中的更改。然后我将不得不在 TFS 中使用比较选项手动检查更改,然后合并。

为什么会出现这个错误?我做对了吗?

0 投票
1 回答
53 浏览

testing - 如何从我的测试解决方案之外的程序中收集代码覆盖率数据?

我正在尝试为我的自动化测试收集代码覆盖率数据。但是,我们构建的测试框架与我们的产品不是同一解决方案的一部分,并且我们的测试没有直接引用我们产品的代码。

正因为如此,我担心仅仅在 vstest 中开启代码覆盖率并不足以查看产品中执行了哪些代码。

如何在代码覆盖率数据中包含单独的可执行文件?

我目前正在尝试的路径:

  • 在 .runsettings 文件中包含我们产品的 .pdb 文件的路径,一切都会神奇地工作
  • 使用另一个收集代码覆盖率的工具,例如 vsperfmon,在测试运行期间收集我们产品的代码覆盖率数据
0 投票
1 回答
334 浏览

c# - VSIntr 未收集数据

我正在尝试检测我们的应用程序以寻找性能优化,但我无法从中获取任何数据。我主要对函数运行时间以及调用它们的次数感兴趣。

你能指出我的过程中的缺陷吗?

这是我所做的:

1.VSInstr MyAssembly.dll

这将创建仪表化的 dll(如两倍大小)并备份原始文件。我收到关于强名称事物的警告,所以第 2 步

2. sn -Ra MyAssembly.dll TheKeyFile.snk

说辞职成功

3. VsPerfCLREnv /traceon

设置环境变量

4. 运行程序。我就在我要调查的步骤之前进行。

5. VsPerfCmd /start:trace /output:../Reports/Report.vsp

开始跟踪

6.单击按钮执行该过程(应用程序创建)并等待完成

7. VSPerfCmd /shutdown

停止追踪。

8. VSPerfCLREnv /关闭

将环境重置为正常

最后,我检查了 Report.vsp 文件。这是一个 148KB 的文件,在 VS2017 中打开时会抛出这两个错误弹出窗口并且无法打开任何内容:

  • 文件不包含数据缓冲区
  • 分析报告失败
0 投票
1 回答
306 浏览

visual-studio - 使用 vsperfmon 获取在 IIS 中运行的 REST 服务的代码覆盖率

我正在尝试获取在 IIS 中运行的 ASP.NET REST 服务(使用 global.asax 文件)的代码覆盖率指标。我遵循了以下基本步骤:

  1. 使用“VSPerfClrEnv /globaltraceon”设置环境变量(然后重新启动计算机)(我也尝试过 /globalsampleon)
  2. 使用“vsinstr –coverage”检测 DLL 的代码覆盖率,我对 5 个我感兴趣的 DLL 执行此操作
  3. 使用“VSPerfCmd /start:coverage /output:cc.coverage /CS /user:Everyone”启动分析器
  4. 在 IIS 10 1703 中启动服务,使用任务管理器记下 w3wp.exe 的 PID
  5. 使用“VSPerfCmd /attach:”将探查器附加到服务
  6. 从 Visual Studio '17 Enterprise Test Explorer 对服务运行测试
  7. 使用“VSPerfCmd /detach”
  8. 使用“VSPerfCmd /shutdown”

但是当我打开创建的 cc.coverage 文件时,只有一两个 DLL(不一致)有覆盖结果,并且测试绝对会在所有 5 个 DLL 中执行代码。我做错了什么或错过了一步吗?谢谢!

0 投票
0 回答
389 浏览

vsperfmon - Visual Studio 2019 中缺少 vsperf.exe

在 Visual Studio 2017 之前,还有 vsperf.exe。

从 Visual Studio 2019 开始,即使我在 Visual Studio 2019 安装程序(下面的“1”)中打开了复选框“C++ Profiling Tools”,但没有 vsperf.exe。

抱歉,我找不到如何将语言更改为英语。

vsperf.exe 是否已弃用?如果是,有什么替代方案?

Visual Studio 2019安装目录下有一些vsperf*.exe文件,如vsperfmon.exe、vsperfcmd.exe、vsperfsrv.exe、vsperfreport.exe、vsinstr.exe等,这些可执行文件是什么?