问题 调试时无法查看变量值


我正在尝试调试我正在处理的当前应用程序的部分,但是当我尝试检查属性/变量的值时,我得到错误:

Cannot evaluate expression because a thread is stopped at a point where garbage collection is impossible, possibly because the code is optimized.

这只是一个常规的ASP.NET项目。在应用程序的某些部分,我可以完美地查看属性和变量。我还没有弄清楚我能够和不能看到变量值的代码块有什么不同。


3259
2018-03-09 04:08


起源



答案:


问题是 记录 在MSDN博客上,由于某些情况下某些类型的大小限制,链接中有更多细节。我相信它是256字节和/或传递给函数的参数数量的总大小/数量。很抱歉,似乎没有快速修复,但希望MSDN博客条目可以帮助您找到解决问题的方法。


10
2018-03-09 10:07



我怀疑256字节限制(或参数数量)是此错误的最常见原因。链接文章中引用的文章, Funceval规则 给出了为什么会发生这种情况的其他原因。 - kristianp
这也是在VS2008 RTM中,因此SP1可能已修复它。另外我不知道它甚至存在于VS2010中。 - CertifiedCrazy
仅供参考,VS2010存在同样的问题。 - Giuseppe Romagnuolo


答案:


问题是 记录 在MSDN博客上,由于某些情况下某些类型的大小限制,链接中有更多细节。我相信它是256字节和/或传递给函数的参数数量的总大小/数量。很抱歉,似乎没有快速修复,但希望MSDN博客条目可以帮助您找到解决问题的方法。


10
2018-03-09 10:07



我怀疑256字节限制(或参数数量)是此错误的最常见原因。链接文章中引用的文章, Funceval规则 给出了为什么会发生这种情况的其他原因。 - kristianp
这也是在VS2008 RTM中,因此SP1可能已修复它。另外我不知道它甚至存在于VS2010中。 - CertifiedCrazy
仅供参考,VS2010存在同样的问题。 - Giuseppe Romagnuolo


本文, Funceval规则 给出了为什么会发生这种情况的原因。如果打开调试并且已经关闭优化,那么您似乎没有太多关于此问题的事情。


2
2017-07-26 05:58



好文章,谢谢! - Rex Morgan


你在发布版本吗?尝试将配置更改为“debug”,看看它是否有所改进。


0
2018-03-09 04:09



不,解决方案配置设置为“调试” - Rex Morgan
确保属于解决方案“调试”配置的所有项目都标记为此类。调试只是绰号,它可能有 项目 在解决方案范围的“调试”配置下设置为“Release”。混乱?是。 - Phil Price
我已经完成了每个项目。它们都设置为“活动(调试)”,但我将它们全部更改为“调试”。仍然没有运气。 - Rex Morgan


我们在两个WinForm用户控件中遇到了同样的问题。在这两种情况下,用户控件都包含许多业务逻辑(分别为2000和3000行代码)并使用多个相当重的对象(它们具有30多个属性,这些属性在其中一个属性中第一次从数据库自动填充被访问)。当您尝试单步执行(稍微复杂)验证和保存方法时,在尝试访问对象属性时会收到相同的消息。

我们得出的结论是,用户控件的大小和复杂性与所使用的对象的大小和复杂性以及条件数据库访问相结合,对于调试器来说只是变得太多了,我们应该只做一些重大的重构来移动大多数业务逻辑都脱离了用户控制。有趣的是要知道你的问题是否来自同一种情况,以及做上述类型的重构是否确实有所作为(我们没有时间和/或勇气:)这样做)。


0
2018-03-09 10:19