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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
4 129
12
Перейти к ответу Данный вопрос помечен как решенный

Ответы 12

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

Сделал это по указанию М.С., и это не помогло.

ScottCher 02.10.2008 19:56

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

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

Он установлен на DEBUG, и нет внешних DLL - все они локальные проекты.

ScottCher 02.10.2008 19:57

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

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

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

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

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

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

это .Net, и я не создаю проект DLL, потребляемый внешним exe.

ScottCher 02.10.2008 20:25

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

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

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

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

ScottCher 02.10.2008 20:27

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

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

Прочтите разместить здесь и комментарии, чтобы решить эту проблему.

Это не проект ASP.Net, хотя у него есть веб-службы (это приложение smartclient). Однако точки останова не работают не только на стороне веб-сервиса, но и в exe и связанных с ними dll.

ScottCher 02.10.2008 20:55

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

Нет, ничего подобного здесь нет, хотя вы делаете несколько действительно хороших предложений. 8)

ScottCher 02.10.2008 21:21

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

Точки останова не работали, и все выглядело так, как если бы код был скомпилирован в режиме RELEASE.

ScottCher 03.10.2008 21:22
Ответ принят как подходящий

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

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

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

  1. остановить отладчик
  2. закройте IDE
  3. закройте приложение хостинга
  4. уничтожить папки obj и bin
  5. перезапустите IDE
  6. перестроить проект
  7. снова пройти через окно модулей
  8. После того, как вы перейдете к местоположению вашего PDB-файла, Статус символа должен измениться на Символы загружены, и теперь вы должны иметь возможность устанавливать и перехватывать точку останова в своей строке кода.

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

http://dpotter.net/Technical/2009/05/upgrading-to-ie8-breaks-debugging-with-visual-studio-2005/

Интересно и полезно, но не то, что вызвало проблему, которую я видел - IE8 не был установлен (даже не думаю, что он был доступен в то время). Тем не менее - хорошая ссылка, спасибо!

ScottCher 05.01.2010 15:49

Другие вопросы по теме