Точка останова не подключена при отладке в VS.Net 2005

В последнее время столкнулся с этой проблемой... При отладке приложения в VS.Net 2005 точки останова не подключены. Ошибка указывает, что скомпилированный код не совпадает с запущенной версией, и поэтому существует несоответствие, которое приводит к отключению точки останова.

Очищенное решение всего файла bin и повторной компиляции не помогает. Не просто происходит на одном ящике или на лице.

Добавлено Примечание: Это решение находится в TFS для управления версиями. Если я удалю свой локальный репозиторий TFS и получаю его из исходного кода с нуля, НЕКОТОРЫЕ проблемы исчезнут. Я также попытался удалить и переустановить Visual Studio. Это также помогает ИНОГДА. Тот факт, что обе эти работы работают некоторое время, указывает на то, что проблема не вызвана напрямую.

Ответы

Ответ 1

Возможно, это предложение может помочь:

  • Во время отладки в Visual Studio нажмите "Отладка" > "Windows" > "Модули". В IDE будет установлено окно модулей, в котором будут показаны все модули, которые были загружены для вашего проекта.
  • Ищите свою DLL проекта и проверьте для нее статус Symbol.
  • Если он говорит "Символы загружены", значит, вы золотые. Если он говорит что-то вроде Не удается найти или открыть файл PDB, щелкните правой кнопкой мыши на своем модуле, выберите "Загрузить символы" и перейдите к пути вашего PDB.

Я обнаружил, что иногда необходимо:

  • остановить отладчик
  • закрыть IDE
  • закрыть хостинг-приложение
  • nuke папки obj и bin
  • перезапустить IDE
  • перестроить проект
  • снова запустите окно "Модули"
  • Как только вы перейдете к местоположению вашего PDB файла, статус Symbol должен измениться на "Загруженные символы", и теперь вы сможете установить и поймать точку останова на вашей строке в коде.

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

Ответ 3

В "Параметры" → "Отладка" вы можете снять флажок "потребовать, чтобы исходные файлы соответствовали оригинальной версии", что может помочь.

Ответ 4

Установлена ​​ли конфигурация сборки Release?

У вас есть ссылка на внешнюю DLL, где установлена ​​точка останова?

Ответ 5

Вы создаете проект DLL, который потребляется внешним исполняемым файлом? Вы используете .NET или COM?

Если вы используете COM Interop с .NET, иногда версии DLL могут быть проблемой, когда исполняемый файл загружает DLL. Например, если ваша ежедневная сборка выдает инкрементный номер сборки, но ваша DLL-библиотека отладки имеет меньший номер сборки, исполняемый файл не будет загружать DLL отладки. Чтобы исправить это, вам нужно будет отсканировать каталог HKEY_CLASSES_ROOT\CLSID в вашем реестре для GUID/CLSID вашего компонента .NET/COM. В InProc32 удалите записи с более высоким номером версии, чем ваша отладочная DLL.

Опять же, вышеприведенное относится только к библиотекам .NET + COM Interop.

Ответ 6

У меня была аналогичная проблема в прошлом.

Было решено закрыть Visual Studio и удалить временные ASP.NET файлы сборки для проекта в разделе "C:\WINDOWS\Microsoft.NET\Framework {framework version}\Temporary ASP.NET Files", повторное открытие проекта.

Прочтите сообщение здесь и комментарии для его устранения.

Ответ 7

AviewAnew - уже сделал это по просьбе технолога MS. Это не помогло отключить требуемый исходный файл для соответствия версии.

Mike L - настройка установлена ​​на DEBUG, и теперь есть внешняя DLL. Использование всех локальных проектов, кроме ссылок на фреймворки.

Ответ 8

Вы уверены, что файлы .pdb находятся в той же папке, что и исполняемый файл? Убедитесь, что последняя измененная дата обоих файлов совпадает, и что VS прикреплен к этому exe (и никому другому).

Ответ 9

Есть ли у вас пост-строительный шаг, который каким-либо образом затрагивает ваши двоичные файлы? Если это так, это может смутить отладчик и сделать его похожим на то, что ваши символы не соответствуют вашей exe/dll из-за неправильного размера/метки времени.

Ответ 10

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

Это звучит как другая проблема, но, возможно, стоит убедиться, что оптимизация отключена в режиме отладки. [Проект/Свойства, вкладка Настройки сборки]

Ответ 11

Уверены ли какие-либо атрибуты отладки в коде, которые предотвращают отладку кода, например DebuggerHidden или DebuggerStepThrough, в любой точке приложения?

Ответ 12

Можете ли вы пройти через свой код до линии точки останова, а не запускать и ждать, пока он не ударит? Вы можете вообще пропустить код?