2009-03-09 3 views
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. В некоторых частях приложения я могу прекрасно просматривать свойства и переменные. Я не понял, что отличает блоки кода, которые я могу, и не могу видеть значения переменных в.

ответ

10

Проблема была documented в блоге MSDN, как ограничение размера определенных типов в определенных ситуациях, более подробная информация в ссылке. Я считаю, что это 256 байт и/или общий размер/кол-во числа аргументов, переданных функции. Извините, что, похоже, нет быстрого исправления, но, надеюсь, запись в блоге MSDN поможет вам определить способ решения вашей проблемы.

+1

Я сомневаюсь, что ограничение по 256 байт (или количество аргументов) является наиболее распространенной причиной этой ошибки. Статья, упомянутая в связанной статье [Правила Funceval] (http://blogs.msdn.com/b/jmstall/archive/2005/11/15/funceval-rules.aspx), дает ряд других причин, почему это может возникнуть. – kristianp

+0

Это было также в RTM VS2008, поэтому SP1, возможно, исправил его. Также я не знаю, что он существует даже в VS2010. – CertifiedCrazy

+0

FYI, проблема в VS2010. –

0

Вы делаете выпускные сборки? Попробуйте изменить конфигурацию на «debug» и посмотрите, улучшится ли она.

+0

Нет, для конфигурации решения установлено значение «Отладка» –

+0

Убедитесь, что все проекты, входящие в конфигурацию решения «Отладка», помечены как таковые. Отладка - это просто прозвище, и возможно, что * Проекты * установлены на «Выпуск» в конфигурации с широким решением «Отладка». Смешение? Да. –

+0

Я пошел, хотя каждый из моих проектов. Все они настроены на «Active (Debug)», однако я изменил их все на «Debug». Еще не повезло. –

0

У нас такая же проблема в двух наших пользовательских элементах управления WinForm. В обоих случаях пользовательские элементы управления содержат много бизнес-логики (соответственно 2000 и 3000 строк кода) и используют несколько довольно тяжелых объектов (у них есть 30+ свойств, которые автоматически заполняются из базы данных при первом использовании одного из свойств доступны). Когда вы пытаетесь выполнить несколько (несколько сложных) методов проверки и сохранения, вы получаете это же сообщение при попытке получить доступ к свойствам объекта.

Мы пришли к выводу, что размер и сложность пользовательского элемента управления в сочетании с размером и сложностью используемых объектов и доступом к условной базе данных становятся слишком большими для обработки отладчика и что мы, вероятно, должны просто сделать некоторые основной рефакторинг для перемещения большей части бизнес-логики из пользовательского элемента управления. Было бы интересно узнать, возникает ли ваша проблема из той же ситуации и действительно ли делает этот рефакторинг на самом деле (мы не имели времени и/или смелости :) для этого).

2

Эта статья, Rules of Funceval дает ряд причин, почему это может произойти. Если отладка включена и оптимизация отключена уже, похоже, вы ничего не можете сделать по этой проблеме.

+0

Хорошая статья, спасибо! –

Смежные вопросы