Почему мой отладчик С# пропускает контрольные точки?

Отладчик My С# работает некорректно. Иногда он пропускает точки останова и строку кодов. Я проверил диспетчер конфигурации. Я даже пытался добавить свои проекты в новые файлы решений. Может кто-нибудь, пожалуйста, помогите мне?

Ответы

Ответ 1

Мой контрольный список отладки:

  • Убедитесь, что вы прикрепляетесь к процессу с использованием правильного типа кода - если ваш процесс имеет как неуправляемый, так и управляемый код, а затем не полагайтесь на "авто", чтобы работать на вас, четко укажите, какой код вы пытаетесь отладить
  • В окне модулей (Debug → Windows → Modules вам может потребоваться включить его в меню "Настроить..."
  • Убедитесь, что сборка, которую вы пытались отладить, была загружена, и эти символы были загружены - если они не были загружены, щелкните правой кнопкой мыши на этом модуле и выберите "символы загрузки"
  • Откройте файл кода и поместите точку останова - если он появляется с маленьким предупреждающим символом, тогда посмотрите и посмотрите, что он говорит,
  • Вам может потребоваться перейти к "tools → options → debugging → general" и отключить "Включить только мой код (только управляемый)"
  • Возможно, вы также захотите снять флажок "Требовать, чтобы исходные файлы соответствовали оригинальной версии", если вы считаете, что ваши источники могут быть немного отключены (остерегайтесь, так как это может привести к отладке с совершенно неправильными источниками, что может быть очень запутанный)

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

Ответ 2

Убедитесь, что оптимизация отключена (это defaut для конфигурации Debug, но они включены в конфигурации Release). Оптимизация компилятора может испортиться с отладчиком...

Ответ 3

Вы уверены, что он скомпилирован правильно? Это звучит так, как будто вы отлаживаете предыдущую версию, что может произойти, если сборка завершилась неудачей (возможно, ошибка кода, возможно, файлы только для чтения).

Ответ 4

Если все методы пропущены, посмотрите на источник и посмотрите, присутствует ли атрибут System.Diagnostics.DebuggerStepThroughAttribute.

Несмотря на это имя, оно ПРЕДОТВРАЩАЕТ отладчик с помощью метода.

Ответ 5

Это сработало для меня в VS 2017, откройте "Инструменты" > "Параметры", затем в окне "Параметры" перейдите в раздел "Отладка". Включить - "Включить степпинг источника .NET Framework"

Ответ 6

Это звучит так, как ваш исходный код не синхронизирован с файлами PDB. Самое простое решение - очистить решение (которое удаляет все ваши DLL из папки bin). Перекомпилируйте, а затем повторите попытку.

Если все еще не удается, попробуйте закрыть решение и удалить папки "obj". И затем повторите попытку.

А также проверьте, что вы компилируете в режиме отладки - что-то, что я делал часто ( "почему бы вам не пройти?" ) не получить точку останова

Ответ 7

Если по крайней мере иногда ударяется точка разрыва, это означает, что все настройки, скорее всего, ОК.

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

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

Это может быть иногда недостаточно, например: Если ваше свойство возвращает коллекцию, отображая, например, a Count() будет оценивать свойство - поэтому удалите также все ссылки свойства из окон часов и т.д.

Ответ 8

Отключение "Project Properties/Build/Optimize code" работало для меня.

Ответ 9

Если вы получаете такую ошибку:

Текущий .NET SDK не поддерживает таргетинг на .NET Core 2.1. Либо предназначайтесь для .NET Core 2.0 или ниже, либо используйте версию .NET SDK, которая поддерживает .NET Core 2.1. DCR_Parser

Щелкните правой кнопкой мыши проект в обозревателе решений и выберите Свойства. На вкладке "Приложение" перейдите к целевой среде .NET Core 2.0. И сохранить.

Ответ 10

Ответ @Justin выше был очень полезным. Я бы добавил одну вещь в список.

  • Убедитесь, что вы работаете в режиме отладки, и что в настройках отладки опция "Оптимизировать код" не отмечена. Увидеть ниже:

General run setting Debug Settings Release Settings