Почему Visual Studio останавливается при отладке? - PullRequest
4 голосов
/ 25 ноября 2008

Иногда, когда я отлаживаю приложение на c #, у меня наступает точка останова, и когда я пытаюсь продолжить, шагнуть или войти в него, он просто ничего не делает. Желтая линия, выделяющая текущую строку, исчезает, но никогда не достигает следующей строки. Приложение все еще зависло, как будто я нахожусь на точке останова, и я ничего не могу сделать, кроме как нажать кнопку «Отладка» и перезапустить. Это не происходит постоянно, но как только оно запускается в приложении, кажется, что это всегда происходит после этого приложения. Я обнаружил, что добавление следующего кода непосредственно перед объявлением класса «исправляет» проблему для этого приложения, но мне очень любопытно, почему это происходит.

[System.Diagnostics.DebuggerDisplay("Form1")]

Дополнительные детали: Я не заметил какой-либо картины относительно того, что делает конкретная линия, когда она замерзает. В большинстве написанных мною приложений используется многопоточность, поэтому есть большая вероятность, что это происходит в потоке каждый раз.

Ответы [ 7 ]

2 голосов
/ 25 ноября 2008

Я видел проблемы с остановкой, когда отладчик пытается оценить переменные, показанные в окнах Auto / Local. Если оценка сложная, то это может привести к значительным задержкам.

Вы можете отключить автоматическую оценку через Tools | Options, и это действительно имеет большое значение.

2 голосов
/ 13 мая 2009

Я сталкивался с таким поведением, хотя я впервые.

Я справился с этой проблемой двумя способами

  1. Ваш способ установки этого атрибута, [System.Diagnostics.DebuggerDisplay ("Form1")]
  2. Отключение Инструменты-> Параметры-> Отладка-> Общие-> Включить оценку свойства и другие неявные вызовы функций.

Я все еще отлаживаю свой код, но мне кажется, что некоторые оценки Autos не выполняются (возможно, возникает исключение), что может привести к сбою отладчика.

Пожалуйста, дайте нам знать, если это также ваш случай.

1 голос
/ 25 ноября 2008

Если вы отлаживаете многопоточное приложение, возможно, вы меняете поток. Во время отладки вы можете переключаться между потоками с помощью «окон потоков», чтобы снова видеть, где находится желтая строка отладки.

1 голос
/ 25 ноября 2008

Какой код вы отлаживаете?

Когда вы "входите", вы вызываете свой собственный код .NET, или вызываете нативную библиотеку, или внешнюю сборку, для которой у вас нет файлов pdb? Любая из этих ситуаций может привести к зависанию отладчика во время выполнения внешнего кода.

0 голосов
/ 05 марта 2009

Я видел такой тип поведения, когда моя БД работала очень медленно, NHibernate пытается записать в нее скрытно, и весь отладчик случайно блокируется, когда БД получает привязку .

0 голосов
/ 25 ноября 2008

тупик кажется вероятным в вашем случае. Нажмите кнопку паузы и посмотрите на представление потоков в следующий раз, когда это произойдет.

0 голосов
/ 25 ноября 2008

Мой экстрасенсорный отладчик говорит, что вам не хватает символов для чего-то, и VS пытается найти их в сети. Попробуйте установить путь к вашему символу, например, C: \ foo.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...