Проблема медленной отладки в Visual Studio
В моем экземпляре Visual Studio, даже если я просто написал одну строку возврата в консольном приложении C#, мне потребуется минута после нажатия, F5чтобы выполнить фактический код (я имею в виду время, необходимое для остановки на одном операторе возврата после нажатие F5- я установил точку останова на операторе возврата в main
функции). Что случилось? Есть контрольный список?
Я использую Visual Studio 2008 VSTS edition и отлаживаю на Windows Server 2003 x64.
Ответов (24)24
Возможно, вам придется удалить все точки останова --- обратите внимание, что вам нужно нажать кнопку «Удалить все точки останова» (или использовать Ctrl+ Shift+ F9), а НЕ просто удалять их одну за другой. Если Visual Studio изменила настройки вашего решения, последнее не сработает. Вам может потребоваться сначала добавить точку останова, чтобы это работало (умно, а?).
В худшем случае вам может потребоваться удалить .suo
файл и позволить Visual Studio начать новый с нуля. Обратите внимание, что вы потеряете свои личные параметры конфигурации решения (только для этого решения, а не для других). Однако вы можете временно переместить / переименовать файл, пока не определите, является ли это проблемой; таким образом, вы всегда можете переместить его обратно. Я видел, как некоторые онлайн-ресурсы рекомендуют также удалить (переместить / переименовать) .ncb
файл.
В моем случае панель инструментов Google замедляла мою отладку.
gplus_notifications_gadget.html просто продолжал работать и перегружал отладчик. Я хотел сохранить панель инструментов Google, потому что использую ее регулярно, поэтому я просто отключил кнопку уведомления G + (небольшую кнопку рядом с кнопкой профиля). Теперь он счастлив.
Работа под отладчиком для меня была примерно в 10 раз медленнее, чем работа без отладки.
Попробовав все предлагаемые здесь решения, я просмотрел все настройки отладчика и включил / отключил их, чтобы увидеть, имеет ли это значение.
Для меня оказалось, что отключение « Подавить JIT-оптимизацию» при загрузке модуля в настройках отладки значительно улучшило ситуацию.
Другая причина плюс ... Как найти проблему
Для меня это была опция ShowOtherThreadIpMarkers . Значение 1 делает Visual Studio (2010) невыносимо медленной (3-5 секунд на каждый шаг отладки. При значении 0 он снова становится быстрым.
Что это за вариант? Я понятия не имею. Мне не удалось найти его через пользовательский интерфейс Visual Studio. Я снял там все возможные варианты отладки, и ничего не сработало.
Итак, я перешел в настройки импорта / экспорта и загрузил свои старые настройки, которые я ранее сохранял, возвращаясь назад во времени, пока Visual Studio снова не станет быстрой, затем сравнил файлы vssettings ... и т. Д. И т. Д.
Я хотел бы отметить, что если вы загружаете настройки, находясь в режиме отладки, остановленном на точке останова, они немедленно вступают в силу. Вам не нужно останавливать отладчик и перезапускать его.
У меня была такая же проблема в Visual Studio 2010, когда выполнение кода было мучительно медленным (от 3 до 10 секунд). Однако ни одна из вышеперечисленных модификаций настроек не помогла.
В конце концов я нашел окончательное решение, которое будет работать во всех вышеперечисленных проблемах с публикациями: сбросить все ваши настройки, как описано здесь (по сути, меню Инструменты → Импорт и экспорт настроек , Сброс всех настроек с сохранением существующих настроек в файл (для возврата )).
Вы можете сначала сохранить определенную часть ваших настроек. Например, я сначала сохранил свою цветовую тему (в стиле Solarized), а затем восстановил ее после глобального сброса.
Я испытал такое же замедление, и отключение от сети устранило проблему для меня, как указано в некоторых других комментариях и ответах (но, конечно, это не идеальное решение).
В моем случае это одно простое изменение исправило мое решение: в свойствах проекта на вкладке отладки я отключил «Включить процесс размещения Visual Studio (я использую Visual Studio 2010).
Еще одна причина медленной отладки Visual Studio ...
Давным-давно я FusionLog
смог увидеть, что вызывает проблему с привязкой сборки.
Убедитесь, что вы отключили его после использования. Почему? Потому что при включении он записывает на диск много данных журнала.
Это FusionLog
ключ в реестре Windows ( regedit.exe
):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion
Измените значения ForceLog
, LogImmersive
и LogResourseBindings
с 1 (включено) на 0 (отключено).
Получите больше памяти и более быстрый HD. Подробности здесь .
Я видел это раньше. Попробуйте удалить все свои точки останова, а затем установите те, которые вам нужны. Хит F5. Теперь это быстрее?
Я только что заметил, что вы упомянули о настройке функции отладки исходного кода .NET. Попробуйте отключить это. Ваше сетевое подключение к исходному серверу Microsoft может быть медленным. Также отключите подключение к серверу символов в меню Инструменты → Параметры → Отладка → Символы .
Также попробуйте отключить «Разрешить оценку свойств и другие неявные вызовы функций» в меню Инструменты → Параметры → Отладка → Общие .
Убедитесь, что у вас нет устаревших сетевых сопоставлений с серверами, которые больше не существуют (таймауты сети убьют вас). Или используйте что-то вроде Process Monitor, чтобы увидеть, не блокируется ли сеть (или другая файловая ошибка) в течение длительного времени.
Из блога ScottGu, на который ссылается Трэвис: «Еще одна проблема с производительностью, о которой я недавно слышал, - это проблема, с которой, по сообщениям некоторых людей, столкнулись с надстройкой панели инструментов Google. По некоторым причинам это иногда может вызывать длительные задержки при подключении Visual Отладчик Studio в браузере. Если вы наблюдаете длительные задержки с загрузкой вашего веб-приложения и у вас установлена панель инструментов Google (или другие панели инструментов), вы можете попробовать удалить их, чтобы узнать, не является ли это причиной проблемы ».
Перейдите в меню Инструменты → Параметры → Отладчик → Символы и проверьте, установлены ли у вас общедоступные символы или сетевые пути UNC . Также проверьте меню Инструменты * → Параметры → Отладчик → Общие, чтобы узнать, установлен ли у вас исходный сервер.
Все это может повлиять на отладку из-за низкой скорости сети или недоступности серверов. Время ожидания 5 минут - это время ожидания сети.
Если в параметрах ничего не задано, проверьте, установлена ли у вас переменная среды _NT_SYMBOL_PATH.
У меня тоже была эта проблема, но в моем случае она не имела ничего общего с точками останова. Это были ярлыки кода, которые я добавил в окно задач:
Я уверен, что есть другие способы, которыми вы могли бы увидеть такую проблему, но где-то есть ошибка, которая вызвала эту проблему для меня ... удаление всех моих параметров исправило бы это, но это то, что я не хотел делать. Итак, я отладил это и написал об этом в своем блоге ... ваша проблема похожа на мою.
У меня была аналогичная проблема, и ни одно другое руководство, похоже, не помогло. Я перезагрузился безрезультатно. Я удалил все точки останова, удалил файл .suo, проверил, что символы не загружаются из внешних источников, и проверил, что в недоступном приложении нет путей.
Потом подумал почистить раствором. В окне вывода я заметил, что C# IntelliSense сообщил о проблеме при очистке:
Ошибка чтения метаданных из "{B0C3592F-F0D1-4B79-BE20-3AD610B07C23}" ("Система не может найти указанный файл."). IntelliSense может работать неправильно, пока решение не будет перезагружено.
В этом случае, как только вы действительно обнаружите сообщение об ошибке, оно расскажет вам, как именно ее устранить. (Хорошая работа над текстом ошибки, плохая работа над обнаруживаемостью!) Я выгрузил проекты решения, а затем перезагрузил их. Затем я смог успешно запустить чистое решение . Это сработало, и отладчик тоже.