Visual Studio 2008: переход к следующей строке очень медленный при отладке управляемого кода
При переходе через мой код С# по строке через F10, отладчик занимает одну секунду, чтобы перейти к следующей строке.
Я пробовал удалять все часы и точки останова, но это не имело никакого значения.
Это нормально? Это было довольно давно, поэтому я даже не могу вспомнить, было ли это лучше. Мой компьютер для разработки - это четырехъядерный компьютер без фоновой задачи и много оставшегося ОЗУ.
Если это не нормально, что еще я могу попробовать? Он по-прежнему работает, но менее вялый пользовательский интерфейс будет отличным...
Ответы
Ответ 1
Скорее всего, у вас есть переменная в кадре стека вызовов, которая имеет дорогой метод .ToString. В 2008 году данные для окна стека вызовов перестраиваются на каждом шаге независимо от того, действительно ли это окно видно. Часть построения этого окна вызовет .ToString для значений, которые появляются в списке параметров, если они имеют переопределенную .ToString. Попробуйте отключить неявные вызовы .ToString и посмотрите, устраняет ли это проблему.
- Инструменты → Параметры → Отладчик
- Снимите флажок "Включить неявные вызовы .ToString"
Ответ 2
Я обнаружил, что если у вас есть опция отладки неуправляемого кода, отладчик может занять некоторое время, чтобы переходить между строками, даже если вы только отлаживаете управляемый код. Попробуйте отключить этот параметр (Проект > Свойствa > Отладкa > Включить отладчики > Включить неуправляемую отладку кода).
Ответ 3
Я пробовал все вышеперечисленное. Снимите флажок "Показывать темы в источнике", зафиксировав ее.
Ответ 4
В моем случае отключение "прерывания всех процессов при разрыве одного процесса" ( "Инструменты/Параметры/Отладчик" ) сократило время "перешагнуть" с 2-3 секунд до доли секунды.
Я не знаю, почему этот вариант имел такое большое влияние на выполнение одного шага.
Кстати, я полагаю, что отключение этой опции может вызвать проблемы, если вы используете потоки, которые не являются независимыми друг от друга.
Ответ 5
Я когда-то испытывал медленную отладку, поскольку я установил VS для поиска файлов pdb на сетевом ресурсе, который больше не существует.
Здесь: Инструменты - параметры - Отладка - Символы - Файл символа (.pdb) Местоположение
Ответ 6
Я слышал об этой проблеме, если открыто окно "Авто". Попробуйте закрыть это и посмотреть, улучшается ли ваша производительность.
Если вы еще этого не сделали, вероятно, вы также должны установить патч "Visual Studio 2008 SP1 для отладки и остановки точки" . Обратите внимание, что этот патч находится поверх SP1. Документы для патча специально не касаются медлительности, которую вы видите, но это довольно большой патч, и вам может повезти.
Ответ 7
Отключите параметр Включить отладку на уровне адреса в Tools > Options > Debugging > General
.
Для меня это имело огромное значение.
Ответ 8
У вас много настроенных выражений Watch? Они будут оцениваться после каждого шага, и если им потребуется время для запуска, вы заметите это как задержку при шаге.
Ответ 9
У меня была 10-секундная задержка после остановки отладки С#, прежде чем можно было снова начать отладку С#. VS2008 будет зависеть в течение этого времени, при этом ничего не получится. После того, как я отключил процесс хостинга Visual Studio в Project Properties -> Debug
, теперь существует 0-секундная задержка.