Подтвердить что ты не робот

Visual Studio 2008: переход к следующей строке очень медленный при отладке управляемого кода

При переходе через мой код С# по строке через F10, отладчик занимает одну секунду, чтобы перейти к следующей строке.

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

Это нормально? Это было довольно давно, поэтому я даже не могу вспомнить, было ли это лучше. Мой компьютер для разработки - это четырехъядерный компьютер без фоновой задачи и много оставшегося ОЗУ.

Если это не нормально, что еще я могу попробовать? Он по-прежнему работает, но менее вялый пользовательский интерфейс будет отличным...

4b9b3361

Ответ 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-секундная задержка.