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


87

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

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


2
Просто чтобы убедиться ... Сколько памяти у вас доступно при попытке запустить код? VS - это боров памяти из моего опыта ...
RSolberg

1
Какое у вас оборудование? Visual Studio очень интенсивно использует диск и процессор, поэтому при использовании недорогой машины будет не хватать производительности.
Уильям Холройд,

1
Наличие> 2-3 условных точек останова плохо обрабатывается VS ...
Саймон Бьюкен,

У меня есть память 4G, и другие процессы не выполняются одновременно. Я только что перезапустил свою машину пару раз и увидел тот же симптом. Неделю назад я не сталкивался с подобными проблемами. Есть еще идеи?
George2,

2
Все они перечислены в Debug-> Windows-> Breakpoints (Ctrl-Alt-B). Но вы бы знали, если бы вы сделали что-нибудь ...
Саймон Бьюкен,

Ответы:


150

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

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


2
Привет, zweiterlinde. Я считаю, что узкое место должно быть связано с сетью. Когда я отключаю сетевой кабель, производительность при отладке очень хорошая. У вас есть идеи, почему? а как оценивать дальше?
George2

удаление 14-мегабайтного файла .suo сработало для меня :) Теперь это маленькие 150 КБ. проблема возникла после обновления VS2010 Pro до Ultimate
GreyCloud

+1. Большое спасибо, что сработало). Моему VS 2010 потребовалось 2 минуты, чтобы запустить проект на рабочей станции. Ага. Что за баг ....
Арсен Захрай

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

+1 Спасибо, правда. Так что в моем случае удаление файла suo отлично сработало для меня.
Дин Со

26

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

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

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


1
В моем окне точек останова есть только один оператор возврата моей функции Main. Какие-нибудь другие контрольные списки?
George2

1
Добавлено еще кое-что, чтобы попробовать. Надеюсь, это поможет.
диез м-диез

Я удалил единственную точку останова в операторе возврата моей функции Main, но все еще очень медленно запускает приложение и останавливается, занимает 1 минуту или около того. Есть еще идеи?
George2

Вот еще одна идея изолировать вашу проблему. Попробуйте отключить сетевой кабель, перезапустите Visual Studio и нажмите F5 в своем проекте. Это что-нибудь меняет?
диез м-диез

1
Попробуйте отключить это, ваше сетевое подключение к исходному серверу Microsoft может быть медленным. Также отключите любое подключение к серверу символов в Инструменты> Параметры> Отладка> Символы - Это сработало для меня
Юсуф Азад

19

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


+1 за сохранение моего рассудка (и спасение меня от переустановки VS2010). Благодарность!
Чак Ди

Это также упоминаемое решение в MSDN: social.msdn.microsoft.com/Forums/vstudio/en-US/…
ecoe,

Подтверждение этого также относится к более старым версиям 2003.NET и 2005. Одно приложение имело несколько точек останова и работало нормально. Добавлено еще несколько точек останова ... 100% загрузка ЦП и ужасное мерцание в VS при отладке. Закрыл VS, удалил .suo, снова открыл и отладка снова стала быстрой.
AlainD

Это решение, которое я считаю, всегда работает, когда VS становится слишком медленным с точки зрения отладки
Graviton

Или переименуйте файл .suo перед удалением, чтобы можно было вернуться к предыдущему состоянию.
Питер Мортенсен

12

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

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


Это также решает проблему, если у вас есть проект, использующий SharpDX - у меня это сработало, и теперь графическая производительность вернулась к норме.
komorra 09

В особом случае использования SharpDX и Debug-Build у меня был тот же эффект, но только с включенной отладкой DX. Если он не нужен, найдите «DeviceCreationFlags.Debug» и отключите его
thewhiteambit

В VS2015 я снял флажок «Включить Intellitrace» и нажал «ОК». Позже обнаружил, что вам нужно изменить с «Intellitrace и информацию о вызовах» на «Только события Intellitrace»; если вы этого не сделаете, «Включить Intellitrace» ОСТАЕТСЯ ПРОВЕРЕННЫМ!
smirkingman

Решил проблемы! (не верьте комментарию MS: «Эта тема относится только к Visual Studio 2010 Ultimate.»). У меня есть бесплатная версия 2017 года, и она резко ускорила отладку!
marsh-wiggle

IntelliTrace в VS 2017 и более поздних версиях является функцией только для предприятий, поэтому это не устранило мою проблему (поскольку у меня была только версия VS 2017 Pro).
FoxDeploy

6

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


В моем коде пользовательского режима только одна точка останова. Но я вспомнил, что за неделю до этого я использовал функцию отладки исходного кода в Visual Studio, чтобы установить точку останова во внутреннем коде .Net. Есть ли способ проверить все точки останова, включая внутренние .Net, которые я установил?
George2

Нет, но все еще медленно, есть еще идеи?
George2

не совсем, похоже, что ваше оборудование должно быть в порядке, а все другие элементы, которые я бы попробовал, были отмечены другими комментаторами. На этом этапе я, вероятно, попробую переустановить Visual Studio - возможно, что-то не так с установкой
ИНФОРМАЦИЯ 1800

Я переустановил его в другой каталог, но по-прежнему наблюдались те же симптомы. Есть еще идеи?
George2

6

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

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

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


Спасибо, это было для меня. Иногда я загружал 1 или 2 файла символов в окно модулей, указывая на символы из наших сборок через UNC-пути, или, реже, указывая на виртуальные машины, которые больше не существуют. Не понял, что он сохранил все эти пути в настройках Debugger / Symbols.
Брайан

6

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

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


У меня был ужасный опыт веб-отладки на работе, пока я не отключил антивирус ESET. После нажатия F5 время отклика увеличилось с 2-3 минут до 2-3 секунд.
Джеймс Халс

1
Приостановка ThreatFire на время мне тоже очень помогла - спасибо! (Временное отключение Avast! Тоже немного помогло, но не настолько.)
Джон Кумбс

Malwarebytes был причиной моей проблемы. Выход из него исправил медлительность.
Бен Рубин

Я тоже использую Malwarebytes ... После выхода из него отладка VisualStudio стала намного быстрее. Раньше запуск отладки был 15сек, теперь 2сек) .. Спасибо!
BlueDev

5

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


3

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

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

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

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

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


+1 Спасибо, это тоже была моя проблема с веб-приложением на C # в VS2015. Я отключил параметр «Показывать потоки в исходном коде» на панели инструментов во время отладки, и проблема исчезла. Если параметр недоступен на панели инструментов, его можно найти, щелкнув правой кнопкой мыши любой поток внутри окна потоков.
Гру

2

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


У вас установлена ​​панель инструментов Google? Даже отказ от ответа поможет будущим читателям этого вопроса.
Кэт Циммерманн,

Я открыл IE, но панель инструментов не отображается. Означает ли это, что у меня не установлена ​​панель инструментов, и это не повлияет на Visual Studio? :-)
George2

2
Вау. Я думал, что это не имеет смысла, но я просто удалил, и моя машина вернулась в
рабочий

1
Другой плагин, который обвиняют, - LastPass. Это проблема только с IE или плагин в любом браузере может на что-то повлиять?
Дениз Скидмор

1
@DeniseSkidmore Ты потрясающий, я бы хотел проголосовать больше одного раза. Все эти другие решения и ничто не помогало ... затем я прочитал ваш комментарий, отключил надстройку LastPass IE, и внезапно она снова стала быстрой. Я подтвердил, что это проблема, повторно включив надстройку, и она снова замедлилась. СПАСИБО!!!!
Льюс Терин

2

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

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

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


1

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


Process Monitor - отличный инструмент! :-) Но какую опцию в Process Monitor можно использовать, чтобы увидеть, «не блокируется ли сеть (или другая ошибка файла) в течение длительного времени»?
George2

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

Привет, Майкл Берр, в Process Monitor вы имеете в виду мониторинг самого процесса VSTS или мониторинг всех процессов на машине?
George2

Я бы определенно начал с VSTS (devenv.exe), иначе вы получите массу информации, которая почти наверняка бесполезна.
Майкл Берр,

1
Вы захотите использовать «Монитор процессов», а не «Обозреватель процессов». См. Technet.microsoft.com/en-us/sysinternals/bb896645.aspx . Две утилиты выполняют разные функции. Procmon будет отслеживать операции с файлами и реестром. Procexp - удобная утилита, но не обеспечивает такого типа трассировки.
Майкл Берр

1

Используете ли вы symbolsServer для загрузки символов для файлов DLL Windows?

Если да, отключите это, так как это может занять некоторое время, но я бы не ожидал, что это вызовет длительные задержки в базовом консольном приложении.

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


Содержимое пусто в Инструменты> Параметры> Отладка> Символы. Есть еще идеи?
George2

1

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

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


1

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

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


1

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

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

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


1

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


1

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

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

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

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

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

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


Вот что со мной происходило. Вы также можете отключить Fusion Log через его графический интерфейс
Дениз Скидмор

Вы можете увидеть, является ли это вашей проблемой, при запуске Process Monitor вы увидите все обращения к файлу журнала Fusion.
Дениз Скидмор

0

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

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

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


Ссылка не работает: «Ресурс, который вы ищете, был удален, изменено название или временно недоступен».
Питер Мортенсен

0

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


0

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

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

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

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


0

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

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


0

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

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


-9

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


1
Я не думаю, что это проблема H / W, так как мое оборудование - это память 4G + 2 процессора (2.33G), этого достаточно? Кстати: я не страдал от этого неделю назад, поэтому я думаю, что это должны быть некоторые проблемы с настройкой?
George2

2
+1 Полезный совет, не могу поверить, что люди проголосовали против. Хотя удаление файла .suo помогает в 10 раз больше.
Andomar

1
ОП даже не сказал, какова их спецификация. Если бы вы советовали мне, вы бы посоветовали мне получить более 32 ГБ ОЗУ и быстрее, чем мой и без того быстрый твердотельный накопитель.
Valamas
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.