【问题标题】:Unable to view values of variables while debugging调试时无法查看变量值
【发布时间】:2010-10-12 02:50:11
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# .net asp.net


    【解决方案1】:

    您正在制作发布版本吗?尝试将配置更改为“调试”,看看是否有所改善。

    【讨论】:

    • 否,解决方案配置设置为“调试”
    • 确保所有属于解决方案“调试”配置的项目都被标记为这样。调试只是绰号,可以在解决方案范围的“调试”配置下将 Projects 设置为“发布”。令人困惑?是的。
    • 我已经完成了我的每个项目。它们都设置为“活动(调试)”,但是我将它们全部更改为“调试”。还是没有运气。
    【解决方案2】:

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

    【讨论】:

    • 我怀疑 256 字节的限制(或参数数量)是导致此错误的最常见原因。链接文章中引用的文章 Rules of Funceval 给出了导致这种情况发生的许多其他原因。
    • 这也在 VS2008 RTM 中,所以 SP1 可能已经修复了它。另外我不知道它甚至存在于VS2010中。
    • 仅供参考,VS2010 中也存在同样的问题。
    【解决方案3】:

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

    我们得出的结论是,用户控件的大小和复杂性与使用的对象和条件数据库访问的大小和复杂性相结合,对于调试器来说已经难以处理,我们可能应该做一些主要的事情重构以将大部分业务逻辑移出用户控制。想知道您的问题是否来自同一种情况,以及进行上述重构是否真的会产生影响(我们没有时间和/或勇气:) 这样做),这会很有趣。

    【讨论】:

      【解决方案4】:

      这篇文章Rules of Funceval 给出了发生这种情况的多种原因。如果调试已打开且优化已关闭,那么您似乎无能为力。

      【讨论】:

        猜你喜欢
        • 2012-01-01
        • 1970-01-01
        • 2023-03-28
        • 2018-02-10
        • 2018-07-09
        • 2013-08-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多