Проблема отладчика Visual Studio - PullRequest
7 голосов
/ 03 марта 2010

В Visual Studio 2008, после отладки в течение 1-2 минут, когда я нажимаю клавишу F10 (Перешагнуть), отладчик зависает, а Visual Studio останавливается на 5-10 секунд, а затем переходит к следующей строке. Затем, что бы я ни делал (F10, F5, F11 и т. Д.), Отладчик продолжает выполнение, как будто я нажал F5 и все мои формы, которые я отлаживал, закрывались. Я всегда должен перезапустить приложение.

Очень сложно воспроизвести, и это происходит не каждый раз, когда я хочу что-то отладить. У кого-нибудь есть решение?

РЕДАКТИРОВАТЬ: Мне удалось воспроизвести мою проблему с помощью следующего кода:

static void Main(string[] args)
{
   XElement e = new XElement("root");
   Test(e, 0);
}

static void Test(XElement parentElement, int i)
{
   if (i < 1000)
   {
      XElement element = new XElement("element");
      parentElement.Add(element);
      Test(element, ++i);
   }
}

Вам необходимо поместить условную точку останова в строку "XElement element = new XElement (" element ");" с условием "я == 999". Затем запустите программу, подождите 2-3 секунды и поместите обычную точку останова в строку «parentElement.Add (element);». Сейчас VisualStudio зависает и отлаживать невозможно. В приложении WinForm оно закрывает все формы, которые открываются после нажатия клавиши F10.

Но я обнаружил, что если я отключаю опцию отладки «Вызов функции преобразования строки для объектов в окнах переменных» в «Сервис -> Параметры -> Отладка», я могу отлаживать. Это медленно, но по крайней мере VisualStudio не останавливается. Кто-нибудь знает, почему он это делает? Поскольку я не хочу отключать эту опцию, отладка без нее действительно раздражает.

Я также заметил, что если я ставлю точку останова только в конце метода main, код выполняется очень быстро по сравнению с условной точкой останова в рекурсивном методе.

Ответы [ 7 ]

4 голосов
/ 04 марта 2010

Попробуйте удалить файл опций пользователя решения (.suo), в котором хранится информация об отладке / точке останова. Вы потеряете все пользовательские настройки решения, такие как местоположения точек останова. Когда вы сталкиваетесь с «забавными» инцидентами отладки, это первое, что нужно попробовать, потому что этот файл может быть поврежден.

Если это не решит проблему, то у вас есть что-то еще, такое как проблемы с многопоточностью, чрезмерная фрагментация памяти, проблемы со сборкой мусора, проблемы с удалением / завершением и т. Д.

3 голосов
/ 11 марта 2010

Я нашел ответ на этот вопрос в другой ветке Stackoverflow. Для этой проблемы есть исправление MS .

1 голос
/ 03 марта 2010

Я обнаружил, что такие замедления возникают, когда я добавляю удаленные unc-ресурсы, которых не существует, в список каталогов символов.

Попробуйте перейти к Инструменты -> Параметры -> Отладка -> Символы и убедитесь, что все каталоги в этом список действительно существует.

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

0 голосов
/ 23 января 2015

Я знаю, что это старый поток, но это произошло при отладке надстройки Excel в моем случае.

Проблема заключалась в том, что моя точка останова была в фоновом потоке, а в окне просмотра у меня была старая проверка ActiveWorkbook в Excel. Этот вызов, как и многие другие, должен происходить только в главном потоке Excel.

Как только я снял эти часы, они снова отладились.

0 голосов
/ 05 января 2015

Пожалуйста, скачайте исправление по этой ссылке

http://support2.microsoft.com/hotfix/KBHotfix.aspx?kbnum=957912

0 голосов
/ 17 августа 2010

У меня была точно такая же проблема, как вы описали. Исправление MS устранило проблему, и теперь я устанавливаю это исправление всякий раз, когда делаю новую установку VS 2008.

0 голосов
/ 03 марта 2010

Не уверен, что я когда-либо сталкивался с этим, но на вашем месте, если нет, удалите папку bin и пересоберите свой проект. Затем запустите чистый раствор, чтобы быть в безопасности. Иногда, когда ваш PDB устареет, могут произойти какие-то забавные вещи, поэтому вам нужно их очистить.

Кроме того, если вы вызываете внешние сборки, удалите их и подключите их снова, чтобы убедиться, что у вас самые последние сборки.

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