2014-10-03 67 views
6

我从Visual Studio 2013分析C#程序。我去分析 - >性能和诊断来启动向导。它给了我一个分析方法的选择。如果我选择默认的CPU采样,然后分析工作,我可以看到结果。但是,如果我选择了第三个选项,.NET内存分配,那么我的应用程序完成后,我看空的结果,但此错误在Visual Studio输出窗口:VS2013:即使从IDE运行,“VSP2340:环境变量设置不正确”

VSP2340: Environment variables were not properly set during profiling run and managed 
symbols may not resolve. Please use vsperfclrenv before profiling 

所有我在网上看到的文件显示, vsperfclrenv适用于独立探查器,并且在直接从Visual Studio运行探查器时不需要。然而,只是为了安全起见,我试图从命令提示符窗口中设置必要的环境变量,然后直接从该窗口中运行的IDE,因此它拿起环境:

C: 
cd "\Program Files (x86)\Microsoft Visual Studio 12.0\Team Tools\Performance Tools\x64" 
vsperfclrenv /samplegclife /tracegclife /globalsamplegclife /globaltracegclife 
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\devenv.exe" 

然后我去了像以前一样在Visual Studio里面的高性能向导但结果是一样的;我仍然看到VSP2340试图分析结果。我究竟做错了什么?

我注意到向导有四种分析选择:CPU采样,检测,内存分配和资源争用。这与vsperfclrenv提供的选项并不完全匹配,该选项仅讨论采样和跟踪分析(每个应用程序对应的服务变体;我的程序是一个应用程序而不是服务,但我启用了所有选项只是为了确保) 。

难道是有一些额外的环境变量需要内存分配分析?或者是关于vsperfclrenv误导的Visual Studio消息?

+0

长列表你重新启动的壳呢?你至少应该从进程管理器中关闭'explorer',关闭进程管理器,再次打开它(通过ctrl + shift + escape),所以它会重新加载evnVars并启动资源管理器。如果听起来太复杂,只需重新启动电脑。 并尝试以管理员身份运行'vsperfclrenv'。并修复Visual Studio安装 – 2015-01-29 21:10:17

+0

或者,您可以尝试JetBrains,RedGate或SciTech内存分析器(最先进的非托管内存) – 2015-01-29 21:11:37

回答

0

您是否尝试运行Visual Studio命令提示符(以管理员身份)并运行命令vsperfclrenv/globalsampleon?之后你可能需要重新启动。

1

这可能与管理权限有关。在我的情况下,我知道两种解决方法:

  1. 以具有真正的管理员权限的用户身份运行Visual Studio。
  2. 使用[开始 - > Microsoft Visual Studio 2012 - > Visual Studio工具 - >]开发人员命令提示输入VS2012 - >以管理员身份运行。在命令提示符下,vsperfclrenv /samplegclife。窗口标题从Administrator: Developer Command Prompt for VS2012更改为Administrator: VSPerf Sampling Attaching and Allocation Profiling with objects lifetime 'ON'。然后"C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe"

第二种方法看起来就像原始的海报做了什么,但不是一个普通的cmd.exe窗口,我用以管理员身份运行与开发人员命令提示符。对于我来说,当我不以管理员身份运行时,出现VSP2340错误。

我遇到了一个与环境略有不同的非常类似的症状:Windows 7作为普通用户(不在本地Administrators组中)从Start Menu启动Visual Studio 2012,Avecto Defendpoint将提升权限授予Visual Studio可执行文件,CPU分析产生正常结果,但.NET内存分配采样结果为空。输出窗口说:

Profiling started. 
Profiling process ID #### (xxxx). 
Process ID #### has exited. 
Data written to C:\path\to\solution\xxxxyymmdd.vsp. 
Profiling finished. 
VSP2340: Environment variables were not properly set during profiling run and 
    managed symbols may not resolve. Please use vsperfclrenv before profiling. 
Profiling complete. 

对于CPU性能分析运行,而不是VSP2340,我得到的Loaded symbols for [full/path/to/dll]

+0

谢谢。在我遇到错误时,我以具有本地管理员权限的用户身份运行。但我会确保下一次包括这一步。 – 2017-05-02 09:11:43

+0

当我有本地管理员权限时,我不必做任何特殊的事情(我也不会发现你的问题!)在这种情况下(有管理员权限,仍然看到VSP2340),我怀疑这种方法(以管理员身份运行) 。 – 2017-05-03 13:12:25