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

При пошаговом выполнении моего кода C # построчно с помощью F10 отладчику требуется более одной секунды, чтобы перейти к следующей строке.

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

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

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

Ответы [ 9 ]

13 голосов
/ 30 ноября 2009

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

  • Инструменты -> Параметры -> Отладчик
  • Снимите флажок «Включить неявные вызовы .ToString»
5 голосов
/ 30 ноября 2009

Я обнаружил, что если у вас включена опция отладки неуправляемого кода, отладчику может потребоваться некоторое время для перехода между строками, даже если вы только отлаживаете управляемый код. Попробуйте отключить этот параметр ( Проект> Свойства> Отладка> Включить отладчики> Включить отладку неуправляемого кода ).

4 голосов
/ 31 октября 2012

Я попробовал все вышеперечисленное. Снятие галочки с кнопки «Показывать потоки в источнике» исправило ее.

3 голосов
/ 29 марта 2010

В моем случае отключение «прерывать все процессы при разрыве одного процесса» (Инструменты / Параметры / Отладчик) сокращало время «перехода» с 2-3 секунд до доли секунды.

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

1 голос
/ 02 февраля 2012

Отключить Включить отладку на уровне адреса в Tools > Options > Debugging > General.
Это имело огромное значение для меня.

1 голос
/ 30 ноября 2009

Я слышал о такой проблеме, если открыто окно «Авто».Попробуйте закрыть его и посмотрите, улучшится ли ваша производительность.

Если вы еще этого не сделали, вам, вероятно, следует также установить исправление «Отладка и точка останова Visual Studio 2008 SP1».Обратите внимание, что этот патч идет поверх SP1.В документах по патчу не говорится конкретно о медлительности, которую вы видите, но это довольно большой патч, и вам может повезти.

1 голос
/ 30 ноября 2009

Однажды я столкнулся с медленной отладкой, когда настроил VS для поиска pdb-файлов на сетевом ресурсе, которого больше не было.

Проверьте здесь: Инструменты - Параметры - Отладка - Символы - Расположение файла символов (.pdb)

0 голосов
/ 21 января 2012

У меня была 10-секундная задержка после остановки отладки C #, прежде чем я снова смог начать отладку C #. VS2008 зависает в течение этого времени, ничего не нажимая. Теперь после отключения процесса размещения Visual Studio в Project Properties -> Debug.

задержка составляет 0 секунд.
0 голосов
/ 30 ноября 2009

У вас настроено много выражений Watch? Они будут оцениваться после каждого шага, и если для их запуска потребуется время, вы заметите это как задержку при шаге.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...