В 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, код выполняется очень быстро по сравнению с условной точкой останова в рекурсивном методе.