Проблема медленной отладки в Visual Studio

В моем экземпляре Visual Studio, даже если я просто написал одну строку возврата в консольном приложении C#, мне потребуется минута после нажатия, F5чтобы выполнить фактический код (я имею в виду время, необходимое для остановки на одном операторе возврата после нажатие F5- я установил точку останова на операторе возврата в main функции). Что случилось? Есть контрольный список?

Я использую Visual Studio 2008 VSTS edition и отлаживаю на Windows Server 2003 x64.

Ответов (24)

Решение

Возможно, вам придется удалить все точки останова --- обратите внимание, что вам нужно нажать кнопку «Удалить все точки останова» (или использовать Ctrl+ Shift+ F9), а НЕ просто удалять их одну за другой. Если Visual Studio изменила настройки вашего решения, последнее не сработает. Вам может потребоваться сначала добавить точку останова, чтобы это работало (умно, а?).

В худшем случае вам может потребоваться удалить .suo файл и позволить Visual Studio начать новый с нуля. Обратите внимание, что вы потеряете свои личные параметры конфигурации решения (только для этого решения, а не для других). Однако вы можете временно переместить / переименовать файл, пока не определите, является ли это проблемой; таким образом, вы всегда можете переместить его обратно. Я видел, как некоторые онлайн-ресурсы рекомендуют также удалить (переместить / переименовать) .ncb файл.

У вас установлено много точек останова? Это действительно может замедлить время запуска. Каждый раз, когда новый модуль загружается в адресное пространство процесса, все они должны быть проверены, чтобы убедиться, что они действительны.

В моем случае панель инструментов Google замедляла мою отладку.

gplus_notifications_gadget.html просто продолжал работать и перегружал отладчик. Я хотел сохранить панель инструментов Google, потому что использую ее регулярно, поэтому я просто отключил кнопку уведомления G + (небольшую кнопку рядом с кнопкой профиля). Теперь он счастлив.

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

Основная причина оказалась в антивирусной программе (Threatfire), которая сошла с ума во время работы Visual Studio. Убив его процесс, сразу все исправил.

Работа под отладчиком для меня была примерно в 10 раз медленнее, чем работа без отладки.

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

Для меня оказалось, что отключение « Подавить JIT-оптимизацию» при загрузке модуля в настройках отладки значительно улучшило ситуацию.

Что-то, что помогло мне, - это убедиться, что нет условных точек останова. Помимо этого, мне удалось исправить медленную отладку, просто перезапустив Visual Studio и открывая только один экземпляр Visual Studio за раз.

Другая причина плюс ... Как найти проблему

Для меня это была опция ShowOtherThreadIpMarkers . Значение 1 делает Visual Studio (2010) невыносимо медленной (3-5 секунд на каждый шаг отладки. При значении 0 он снова становится быстрым.

Что это за вариант? Я понятия не имею. Мне не удалось найти его через пользовательский интерфейс Visual Studio. Я снял там все возможные варианты отладки, и ничего не сработало.

Итак, я перешел в настройки импорта / экспорта и загрузил свои старые настройки, которые я ранее сохранял, возвращаясь назад во времени, пока Visual Studio снова не станет быстрой, затем сравнил файлы vssettings ... и т. Д. И т. Д.

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

У меня была такая проблема. Попробовав все перечисленные советы и удалив все расширения Visual Studio, мы наконец выяснили, что каким-то образом IntelliTrace был включен. Отключение, которое все устранило.

Как: включить и отключить IntelliTrace

У меня была такая же проблема в Visual Studio 2010, когда выполнение кода было мучительно медленным (от 3 до 10 секунд). Однако ни одна из вышеперечисленных модификаций настроек не помогла.

В конце концов я нашел окончательное решение, которое будет работать во всех вышеперечисленных проблемах с публикациями: сбросить все ваши настройки, как описано здесь (по сути, меню ИнструментыИмпорт и экспорт настроек , Сброс всех настроек с сохранением существующих настроек в файл (для возврата )).

Вы можете сначала сохранить определенную часть ваших настроек. Например, я сначала сохранил свою цветовую тему (в стиле Solarized), а затем восстановил ее после глобального сброса.

Для меня параметр, который убивал производительность (Windows 8 даже зависала, за исключением движения мыши), заключалась в том, чтобы снять флажок «Прервать все процессы, когда один процесс прерывается в меню ПараметрыОтладкаОбщие .

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

В моем случае это одно простое изменение исправило мое решение: в свойствах проекта на вкладке отладки я отключил «Включить процесс размещения Visual Studio (я использую Visual Studio 2010).

В моем случае изменение символа отладки «Автоматически загружать символ для параметра» с «Все модули» на «Только указанные модули» решило проблему. Вы можете изменить этот параметр в меню ИнструментыПараметрыОтладкаСимволы .

Еще одна причина медленной отладки Visual Studio ...

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

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

Это FusionLog ключ в реестре Windows ( regedit.exe ):

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

Измените значения ForceLog, LogImmersive и LogResourseBindings с 1 (включено) на 0 (отключено).

Получите больше памяти и более быстрый HD. Подробности здесь .

Are you using a symbolsServer to download symbols for Windows DLL files?

If so, disable that as it can take some time, but I wouldn't expect that to cause long delays in a basic console application.

Меню СервисПараметрыОтладкаСимволы .

Я видел это раньше. Попробуйте удалить все свои точки останова, а затем установите те, которые вам нужны. Хит F5. Теперь это быстрее?

Я только что заметил, что вы упомянули о настройке функции отладки исходного кода .NET. Попробуйте отключить это. Ваше сетевое подключение к исходному серверу Microsoft может быть медленным. Также отключите подключение к серверу символов в меню ИнструментыПараметрыОтладкаСимволы .

Также попробуйте отключить «Разрешить оценку свойств и другие неявные вызовы функций» в меню ИнструментыПараметрыОтладкаОбщие .

Убедитесь, что у вас нет устаревших сетевых сопоставлений с серверами, которые больше не существуют (таймауты сети убьют вас). Или используйте что-то вроде Process Monitor, чтобы увидеть, не блокируется ли сеть (или другая файловая ошибка) в течение длительного времени.

Из блога ScottGu, на который ссылается Трэвис: «Еще одна проблема с производительностью, о которой я недавно слышал, - это проблема, с которой, по сообщениям некоторых людей, столкнулись с надстройкой панели инструментов Google. По некоторым причинам это иногда может вызывать длительные задержки при подключении Visual Отладчик Studio в браузере. Если вы наблюдаете длительные задержки с загрузкой вашего веб-приложения и у вас установлена ​​панель инструментов Google (или другие панели инструментов), вы можете попробовать удалить их, чтобы узнать, не является ли это причиной проблемы ».

Перейдите в меню ИнструментыПараметрыОтладчикСимволы и проверьте, установлены ли у вас общедоступные символы или сетевые пути UNC . Также проверьте меню Инструменты * → ПараметрыОтладчикОбщие, чтобы узнать, установлен ли у вас исходный сервер.

Все это может повлиять на отладку из-за низкой скорости сети или недоступности серверов. Время ожидания 5 минут - это время ожидания сети.

Если в параметрах ничего не задано, проверьте, установлена ​​ли у вас переменная среды _NT_SYMBOL_PATH.

Я знаю, что это старая тема, но чего стоит ...

Я обнаружил, что если у меня долгое время было открыто отдельное окно Internet Explorer, для начала отладки может потребоваться до минуты. Закройте все окна Internet Explorer, и отладка начнется немедленно.

У меня тоже была эта проблема, но в моем случае она не имела ничего общего с точками останова. Это были ярлыки кода, которые я добавил в окно задач:

http://www.customsoftwareframeworks.com/blog/longwaittimetoinsertoraddalineoftextbuginvisualstudio--tasklistwindow-- только при добавлении и ремонте

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

У меня была аналогичная проблема, и ни одно другое руководство, похоже, не помогло. Я перезагрузился безрезультатно. Я удалил все точки останова, удалил файл .suo, проверил, что символы не загружаются из внешних источников, и проверил, что в недоступном приложении нет путей.

Потом подумал почистить раствором. В окне вывода я заметил, что C# IntelliSense сообщил о проблеме при очистке:

Ошибка чтения метаданных из "{B0C3592F-F0D1-4B79-BE20-3AD610B07C23}" ("Система не может найти указанный файл."). IntelliSense может работать неправильно, пока решение не будет перезагружено.

В этом случае, как только вы действительно обнаружите сообщение об ошибке, оно расскажет вам, как именно ее устранить. (Хорошая работа над текстом ошибки, плохая работа над обнаруживаемостью!) Я выгрузил проекты решения, а затем перезагрузил их. Затем я смог успешно запустить чистое решение . Это сработало, и отладчик тоже.

Или удалите файл .suo, который находится рядом с файлом решения (.sln). Это решило мою проблему с сессиями отладки, которые долго запускались и останавливались.

Закрытие окна «Авто» улучшило для меня отладку в Visual Studio 2008 для большого собственного решения C++.

Скрыть это не получится. Его нужно закрыть.