Visual Studio Предупреждение о точке останова - PullRequest
21 голосов
/ 23 мая 2011

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

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

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

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

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

Ответы [ 5 ]

19 голосов
/ 23 мая 2011

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

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

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

8 голосов
/ 23 мая 2011

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

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

debug

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


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

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


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

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

2 голосов
/ 02 июля 2013

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

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

0 голосов
/ 19 мая 2017

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

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

0 голосов
/ 31 августа 2011

Использование директивы прекомпилятора #line, по-видимому, также влияет на поведение точек останова, как я только что обнаружил.

...