VS2010调试器处于不确定状态

时间:2012-11-21 15:36:41

标签: c# visual-studio-2010 debugging

我正在开发一个大型多线程C#程序,它从多个VS2010项目/解决方案中加载多个DLL。调试它证明比我预期的更困难(谁想)。

问题如下。通常,在几次步进和/或中断操作之后,程序(或者可能是调试器)进入某种既不运行也不停止的不确定状态。在Debug菜单中,ContinueBreak All都显示为灰色,因此我无法继续使用该计划。

有时候,但并非总是如此,当发生这种情况时,我会在观察窗口看到一条消息:

  

功能评估已禁用,因为之前的功能评估已超时。

程序似乎没有运行(没有输出,没有在断点处停止......)并且似乎也没有停止(Watch窗口显示为灰色,{{1}窗口是空的)。

Call StackStop Debugging命令可用且有效。

我可以做任何事情,以便能够正常调试,而无需重复重启会话吗?

我是Windows环境中的新手,可能会遗漏一些明显的东西。

1 个答案:

答案 0 :(得分:2)

正如@Conrad Frix所说,你最好的选择可能是采取内存转储&检查你的线程正在做什么。有许多适用于Windows和Windows的工具。 .Net开发,每个都带来了一些不同的东西:

Windbg - 基于文本的内存检查。非常适合深入挖掘框架/ OS&检查线程堆栈,但是有一个非常陡峭的学习曲线。 (但不会比这更强大)

JetBrains dotTrace - 如果您使用它,则与Reshaper集成。然而,根据我的经验,这不是最好的结果。

RedGate ANTS - 我最喜欢的“现代”基于GUI的分析器。这为您提供了对线程正在做什么的非常好的见解,但如果您的应用程序中有数百个线程,则可能有点难以使用。

Jetbrains& RedGate是付费产品,因此您可能需要使用免费试用来解决您的问题。