当我尝试快速查看变量时,VS 2012调试器挂起

时间:2013-09-18 19:07:00

标签: c# .net visual-studio-2012 .net-3.5

今天下午我遇到了一个非常烦人的错误。我一直在控制台应用程序上随便工作我现在正在工作一段时间,当我快速观察任何变量时,VS2012调试器完全没有任何原因。它挂起15-20秒,然后我收到消息

  

由于先前的功能评估超时,因此功能评估被禁用

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

以下是我迄今为止解决此问题的步骤。

我采取的步骤:

  • 重启VS
  • 重新启动计算机
  • 删除了所有断点
  • 删除了ncb和suo文件
  • 未启用Symbol Server
  • 没有使用网络位置,用户文件是本地的,项目文件是 局部的。
  • 启用/禁用我的代码
  • 确保启用.NET Framework源步骤未启用
  • 确保启用了跳过属性
  • 确保未启用启用源服务器支持
  • 使用/ SafeMode启动visual studio以禁止扩展
  • Cleared Watch Window(无论如何都是空的)
  • 尝试将目标平台更改为x64和任何CPU
  • 禁用antivius
  • 重置visual studio默认设置(devenv.exe / ResetSettings)
  • 重新安装VS

我正在调试的应用程序:

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

为了我的健康,请帮助。

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

编辑:我的电脑规格

  • Windows 7 Ultimate 64位
  • Dell Optiplex 960
  • Intel Core i5-2400 3.1 Ghz
  • 4 GB RAM

编辑:我在两台计算机(相同的代码)上进行了测试,没有使用Visual Studio更新3,但是没有一台工作,而另一台则没有。

编辑:创建了一个简化的控制台应用程序,其设置相同,只包含以下代码行。我在看的时候遇到悬挂问题,然后它也无法连接。我的机器出了什么问题?

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

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)完全没有解决问题。它必须是与OS /硬件相关的vs2012错误。我将在微软开一张票,如果发现有用的东西就会更新。

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

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

11 个答案:

答案 0 :(得分: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>

问题解决了!

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

我对msdn进行了快速研究,发现了这个: http://social.msdn.microsoft.com/Forums/vstudio/en-US/2055d3a0-56d9-4134-be23-09a91203e508/quickwatch-says-the-following-for-all-evaluations-function-evaluation-disabled-because-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更新吗?

答案 3 :(得分:0)

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

答案 4 :(得分:0)

对于我自己,除了x64位之外,我有自己的保存设置。这总是让我头疼的编程... Visual Stutio只要我知道32位,肯定有一个原因......无论如何你的样本工作并没有发生任何事情......我无法确切地告诉你它为什么会发生但是我确信这是一个64位相关的开发环境。

答案 5 :(得分:0)

我试过提供的代码。

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

我在两台不同的PC(桌面和表面Pro)上进行了测试

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

以下是测试应用程序的输出:

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

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

答案 6 :(得分:0)

我遇到了同样的问题。我想它更多地与硬件配置有关。我最近使用Vs 2012从4GB ram升级到8GB,从来没有能够复制这个问题。我以前一直使用早期的硬件配置得到这个错误。

答案 7 :(得分:0)

当您的代码等待某些先前的线程完成执行时,也会尝试删除.suo文件然后重新启动visual studio

答案 8 :(得分: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 如果您使用不同的“暂停?”方法,问题是否仍然存在?

答案 9 :(得分:0)

VS也有一些缺点。例如,如果您在编写代码的同时打开两个VS,它有时会得不到响应并显示“保存自动恢复信息”

答案 10 :(得分:0)

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

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

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

修复是:

  1. 切换到单个显示器
  2. 打开QuickWatch(它确实如此)
  3. 移动它(必须 保存窗口位置)
  4. 关闭它
  5. 插入第二台显示器
  6. 现在,当我使用QuickWatch时,它将正确打开