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

Предупреждение о прерывании Visual Studio

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

В последнее время, когда я вношу изменения в свой код и перекомпилирую, все мои точки останова превращаются в контур круга (вместо полного красного круга), и это дает мне ошибку, которая читает:

В настоящий момент точка останова не будет удалена. Отсутствует исполняемый код. связанные с этой строкой. Возможные причины: условные оптимизация компиляции или компиляции.

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

Я не использую никаких условных компиляций или оптимизаторов. Кто-нибудь знает, что это значит или как это исправить? Это становится довольно раздражающим, заменяя 10-12 точек останова при каждом компиляции.

4b9b3361

Ответ 1

Это может произойти по нескольким причинам.

  • Код, используемый отладчиком, отличается от кода, выполняемого приложением
  • Файл pdb, используемый отладчиком, отличается от кода, выполняемого приложением
  • Был оптимизирован код, в котором выполняется приложение, и была удалена информация об отладке.
  • Код, в котором у вас есть точки останова, еще не загружен в процесс (предполагая, что выше перечисленные выше не являются виновниками)
  • Если вы прикрепляете отладчик, обратите внимание на то, к какой инфраструктуре он подключен (у меня были проблемы с ним, используя .net 4, когда код был всем .net 2.0)
  • У вас есть сборка в GAC. Это может произойти, если вы сказали, что вы установили свою программу, чтобы вы могли ее отладить, но установщик поместил dll в GAC.
  • Удалите ссылку и добавьте ее (спасибо forsvarir). Обычно это происходит, когда проект, на который делается ссылка, не находится в решении, а VS будет копировать dll из каталога bin другого проекта. Вы узнаете, что это проблема, когда вы пытаетесь повторно добавить ссылку и не можете найти проект:)

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

Ответ 2

Проверьте настройки проекта

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

debug

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


Удалить выходные файлы

Физически удалить все сгенерированные DLL, PDB и EXE. Затем снова скомпилируйте, чтобы сгенерировать файлы. Иногда Visual Studio может "потеряться" и "забыть" перезаписать выходные файлы при создании вашего решения.


Перезагрузите компьютер

Обычно он решает 99% проблем. У меня уже были некоторые проблемы с Visual Studio и перезагрузка, или компьютер решил проблему.

Ответ 3

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

При этом вы также можете проверить "Временные файлы ASP.NET" в каталогах c:\Windows\Microsoft.NET\[Frameworks], если вы создаете веб-приложение, так как эти файлы часто являются причиной в мой опыт.

Ответ 4

Использование предписывающей директивы #line также влияет на поведение точек останова, как я только что открыл.

Ответ 5

Добавление этого ответа в старый поток, если кто-то вроде меня отслеживает эту тайну в старом приложении ASP.Net. У меня был один код Webform, который не отвечал на контрольные точки с предупреждением отладчика "... no executable code...". Это делало мою голову, так как все остальные страницы работали нормально. Я сделал чистую, перестроил, очистил временные файлы ASP.Net, без радости.

Преступником с этим файлом было включение нескольких директив #ExternalSource, связанных с некоторыми объявлениями переменных-членов. После того, как они были удалены и проект перестроен, поведение точки останова было восстановлено. Эти строки ExternalSource появлялись в сгенерированном разделе кода. Не знаете, почему они были там.