VS2013:“VSP2340:环境变量未正确设置”,即使从 IDE 运行时也是如此

2023-11-21

我正在从 Visual Studio 2013 分析 C# 程序。我转到分析 -> 性能和诊断来启动向导。它让我可以选择分析方法。如果我选择默认的 CPU 采样,那么分析就会起作用,我可以看到结果。但是,如果我选择第三个选项,.NET 内存分配,那么在我的应用程序完成后,我会在 Visual Studio 输出窗口中看到空结果和此错误:

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,其中仅讨论采样和跟踪分析(每个程序都有应用程序与服务变体;我的程序是应用程序而不是服务,但我启用了所有选项只是为了确定)。

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


这可能与管理权限有关。就我而言,我知道有两种解决方法:

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

第二种方法看起来就像原始海报所做的那样,除了我使用的不是普通的 cmd.exe 窗口以管理员身份运行使用开发人员命令提示符。对我来说,当我不以管理员身份运行时,我会收到 VSP2340 错误。

我在略有不同的环境中遇到了非常相似的症状:Windows 7,作为普通用户(不在本地管理员组中),从“开始”菜单启动 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]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2013:“VSP2340:环境变量未正确设置”,即使从 IDE 运行时也是如此 的相关文章

  • 有没有快速创建集合的方法?

    目前我正在创建一个像这样的新集 std set a s s insert a1 s insert a2 s insert a3 s insert a10 有没有办法创建s在一行 int myints 10 20 30 40 50 std s
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • VS 程序在调试模式下崩溃,但在发布模式下不崩溃?

    我正在 VS 2012 中运行以下程序来尝试 Thrust 函数查找 include cuda runtime h include device launch parameters h include
  • 防止 boost::asio::io_context 在空轮询调用时停止

    此代码调用发布的句柄 boost asio io context ioc boost asio post ioc std cout lt lt lol lt lt std endl ioc poll 而这并没有 boost asio io
  • 根据 N 个值中最小的一个返回不同的结果

    不确定如何使标题更具描述性 所以我只是从一个例子开始 我使用下面的代码位 它从枚举中选择一个方向 具体取决于四个轴中哪一个与给定方向相比形成最小角度 static Direction VectorToDirection Vector2 di
  • 类特定的新删除运算符是否必须声明为静态

    标准中是否要求类特定的 new new delete 和 delete 是静态的 我可以让它们成为非静态成员运算符吗 为什么需要它们是静态的 它们被隐式声明为静态 即使您没有键入 static
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • 如何获取 QTableView 的标题列表?

    我有一个QTableView我的对话框中的对象 我需要访问该表的水平标题并将它们放入QStringList object 尽管进行了大量搜索 但我在 Qt 文档中找不到如何获取此标头列表 编辑 我发现的最接近的地方是this https w
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 无法在内存位置找到异常源:cudaError_enum

    我正在尝试确定 Microsoft C 异常的来源 test fft exe 中 0x770ab9bc 处的第一次机会异常 Microsoft C 异常 内存位置 0x016cf234 处的 cudaError enum 我的构建环境是 I
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • ASP.NET Core MVC 视图组件搜索路径

    在此处的文档中 https learn microsoft com en us aspnet core mvc views view components view aspnetcore 2 2 https learn microsoft
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐