1

导致VisualStudio Debugger“无限旋转”或挂起的已知状态,条件或请求的可重现性是什么?VisualStudio 2012更新4 c#无限循环/调试器挂起

(因为下面的原始问题被搁置 - 请考虑决定放置问题,因为它是可重复的,并且不像调试器会捕获并拒绝设置断点的“错字”那么简单就像它知道它无法处理的其他条件一样。) 当尝试使用带有条件断点的调试器时,是否有其他人观察到VisualStudio“无休止地旋转”? 我等了超过5分钟,其中一个cpu核心与我的应用程序中发生的事情“挂钩”。在此期间,visualstudio正在使用一个cpu核心的75%以上,其中约2%或3%报告为正在使用该应用程序。暂停似乎没有效果。

奇怪的是,应用程序开始正常运行,并在禁用条件断点后启动登录屏幕。然后,我可以重新启用条件断点,并在条件断点处于活动状态的情况下继续使用调试器。

+2

这并不罕见。当条件断点设置在紧密循环的代码中时,它们可能非常昂贵。 –

+0

如此昂贵的应用程序似乎拒绝启动!! ?? !! (我非常了解条件断点是非常昂贵的,但是除了“VisualStudio自言自语......”之外,没有其他任何发生......“ – Wonderbird

+0

您是否在循环内设置了条件断点?在启动期间评估了多少次?你可以发布一些示例代码来展示你的问题吗? –

回答

1

看起来像VisualStudio 2012更新4的调试器/ ide不会警告或知道它不能处理评估变量的条件断点,如果该变量接受放置断点的行上的分配结果。

例如:

public static class MyTest 
{ 
    public static bool DoTesting = true; 
} 

设置在哪里DoTesting设置为true行条件断点和使用条件 MyTest.DoTesting ==真 显然会混淆的VisualStudio的debbuger这么多,它会旋转并且从不运行代码的其余部分。点击“暂停”按钮不会停止在条件语句行,因为您期望它只是“点亮”“暂停”按钮。我认为他们应该拒绝创建条件断点或抱怨它(因为它与其他无法处理的条件相同)。注意,无论它是初始分配还是重新分配值结果。