25

今天下午我遇到了一个非常烦人的错误。我一直在随便研究我正在研究的控制台应用程序一段时间,当我快速观察任何变量时,VS2012 调试器毫无理由地开始挂起。它挂了大约 15-20 秒,然后我收到消息

函数评估被禁用,因为之前的函数评估超时

如果我然后按 F10,调试器将取消附加,并且该过程继续进行。它在几乎所有隐式声明的变量上崩溃

这是我迄今为止为解决此问题所采取的步骤。

我已采取的步骤:

  • 重启VS
  • 重启电脑
  • 删除所有断点
  • 删除了 ncb 和 suo 文件
  • 符号服务器未启用
  • 没有使用网络位置,用户文件是本地的,项目文件是本地的。
  • 仅我的代码启用/禁用
  • 确保未启用启用 .NET Framework 源步进
  • 已启用确保跨步属性
  • 确保启用源服务器支持未启用
  • 使用 /SafeMode 启动 Visual Studio 以抑制扩展
  • 清除监视窗口(反正是空的)
  • 尝试将目标平台更改为 x64 和任何 CPU
  • 禁用防病毒软件
  • 重置 Visual Studio 默认设置(devenv.exe /ResetSettings)
  • 重新安装 VS

我正在调试的应用程序:

  • 类型:C# 控制台应用程序
  • 目标框架:3.5
  • 平台目标:x86

为了我的健康,请帮忙。

编辑:我有 Visual Studio Update 3,版本 11.0.60610.01

编辑:我的电脑规格

  • Windows 7 旗舰版 64 位
  • 戴尔 Optiplex 960
  • 英特尔酷睿 i5-2400 3.1 Ghz
  • 4 GB 内存

编辑:我在两台没有 Visual Studio 更新 3 的机器(相同的代码)上进行了测试,一台可以正常工作,一台不能正常工作。

编辑:A 创建了一个具有相同设置的简化控制台应用程序,其中仅包含以下代码行。我在观看时遇到了挂起问题,然后它也解开了。我的机器可能有什么问题?

这是一个挂起调试器的简化应用程序

static void Main(string[] args)
 {
   var _AppLocation = System.Reflection.Assembly.GetEntryAssembly().Location;
    _AppLocation = _AppLocation.Substring(0, (_AppLocation.Length -
     (System.Reflection.Assembly.GetEntryAssembly().GetName().Name.Length + 5)));

   var directoryInfo = new DirectoryInfo(_AppLocation);
   Console.ReadyKey(); //I break here, check the directoryinfo
 }

编辑 10/3/13:这仍然没有解决,完全重新安装所有东西(办公室、框架、vs)并没有解决问题。它必须是与操作系统/硬件相关的 vs2012 错误。如果他们发现有用的东西,我会在微软开一张票并更新。

编辑 10/30/13:此问题已在两台具有不同硬件配置的机器上重现。我仍在与微软联系以查找问题。看起来像是与框架/windows build/visual studio 相关的东西。

编辑 11/19/13:我仍在与 Microsoft VS 升级团队联系,这是问题的进程监视器日志和 Visual Studio 故障转储。http://sdrv.ms/1egpX4O

4

11 回答 11

5

与 Microsoft VS Escalation 团队并行找到的解决方案。在分析故障转储和进程监视器后,似乎 VS 2012 调试器进程检查 Microsoft Root Authority 证书的存储证书。

由于两台计算机都处于受保护的无互联网环境中,因此它们都从未在线连接过。因此,他们从未下载过 Microsoft CA。由于商店中没有 CA,它导致调试器挂起并专门针对 3.5 目标框架崩溃。

这是 Microsoft VS Team 在调试时绕过此检查的修复:(在应用程序 app.config 中添加)

<configuration>
    <runtime>
            <generatePublisherEvidence enabled="false"/>
    </runtime>
</configuration>

问题解决了!

于 2013-11-20T15:32:09.817 回答
1

考虑使用 Process Monitor 工具来获取在调查期间发生的文件、网络、注册表和进程操作的日志。捕获日志后,您可能会看穿它并调查可能的原因。或者,您可以将您的日志发送给我,我会在我这边进行调查

http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx

于 2013-11-07T10:58:55.400 回答
1

我在使用 Visual Studio 2015(包括更新 1 和更新 2)时遇到了同样的问题。所以发布我的解决方案(我提交给 MS)以防其他人有这个问题。

每当我尝试在 Visual Studio 2015 Enterprise 中使用 QuickWatch 时,它都会挂起开发环境。我无法点击任何东西,我被迫通过任务管理器终止该进程。模态窗口似乎在它后面打开。

我的电脑是 HP Spectre,我插入了另一台显示器。我在两台显示器上都试过了。

解决方法是:

  1. 切换到单个显示器
  2. 打开 QuickWatch(它确实如此)
  3. 移动它(必须保存窗口位置)
  4. 关闭它
  5. 插入第二台显示器
  6. 现在当我使用 QuickWatch 时,它会正确打开
于 2016-05-20T16:12:53.093 回答
0

我对 msdn 进行了快速研究,发现了这一点: http ://social.msdn.microsoft.com/Forums/vstudio/en-US/2055d3a0-56d9-4134-be23-09a91203e508/quickwatch-says-the-following-为所有评估功能评估禁用-因为-a-previous

请尝试以下建议来检查结果:

单击工具 | 选项.. | 调试 | 一般,并取消选中“启用属性评估和其他隐式函数调用”选项。进入(F11)代码查找“超时”的根本原因 重启调试

有关函数评估错误的更多信息,请参阅:http: //msdn.microsoft.com/en-us/library/ms234762 (VS.80).aspx

此外,我们可以在博客上获得更多功能评估的解决方法:http: //blogs.msdn.com/greggm/archive/2005/11/18/494648.aspx

也可能听起来很奇怪,但你有 Visual Studio 2012 的最新更新吗?

于 2013-09-24T20:27:31.623 回答
0

在打开 UAC(用户帐户控制)的情况下运行 VS2012 时,我遇到了一些类似的问题,并且在安装了一些扩展后,VisualStudio 绑定到正在运行的 w3p.exe 进程,该进程在 1 个工作进程下按预期工作。在允许多个工作进程存在时,工作室无法跟踪所有独立线程并阻塞读取为损坏内存的数据。

于 2013-09-25T21:00:47.747 回答
0

对于我自己,除了 x64 位之外,我有你的保存设置。这总是让我在编程中感到头疼......只要我知道,Visual Stuio 就是 32 位的,而且肯定有一个原因......无论如何你采样工作并且没有发生挂起......我不能告诉你它发生的确切原因,但是我确定这是一个 64 位相关的开发环境。

于 2013-10-10T14:37:56.543 回答
0

我尝试了提供的代码。

VS2012 Ultimate 在调试设置和发布设置上运行良好。

我在两台不同的 PC(台式机和 Surface Pro)上进行了测试

我还强制使用 x86 设置而不是 AnyCPU。

这是我的测试应用程序的输出:

http://beehiver.jurion.me/debug%20working.png

我建议完全卸载所有 VS 和所有版本的 .net 并重新安装。这似乎是您的笔记本电脑的问题。

于 2013-10-18T06:22:52.917 回答
0

我有同样的问题。我想它更多地与硬件配置有关。我最近使用 Vs 2012 从 4GB 内存升级到 8GB,但一直无法重现该问题。我过去常常在早期的硬件配置中遇到这个错误。

于 2013-10-29T20:17:43.840 回答
0

当您的代码正在等待一些以前的线程完成执行时会发生此问题,也尝试删除 .suo 文件然后重新启动 Visual Studio

于 2013-10-30T09:43:59.567 回答
0

这可能是相关的 Console.ReadKey() 问题/错误。 http://blogs.microsoft.co.il/blogs/dorony/archive/2012/09/12/console-readkey-net-4-5-changes-may-deadlock-your-system.aspx 如果问题仍然存在您使用不同的“暂停”方法?

于 2013-10-30T19:50:51.867 回答
0

VS也有一些缺点。比如同时打开两个VS,在写代码的时候,有时候会无响应,显示“正在保存自动恢复信息”

于 2013-10-31T06:08:30.800 回答