Как исправить ошибку «В настоящий момент точка останова не будет достигнута. Для этого документа не было загружено никаких символов». предупреждение? - PullRequest
1357 голосов
/ 28 января 2010

C # настольное приложение на экспресс-издание. Сработало, затем не сработало 5 секунд спустя.

Я попробовал следующее.

  • Убедитесь, что конфигурация отладки, флаг отладки и полная информация отладки установлены на всех сборках.
  • Удалите все папки bin и obj и все библиотеки DLL, связанные с проектом, со всей моей машины.
  • Повторное создание проектов, вызывающих проблему с нуля.
  • Reboot.

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


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

Ответы [ 94 ]

6 голосов
/ 08 июня 2015

Ни один из этих ответов не решил мою проблему. Я попробовал еще одну вещь, основанную на том факте, что проект с остановкой на самом деле не был загруженным проектом. Я обнаружил, как Ганс Пассант написал, что .dll, где я хочу остановить отладчик, и связанные файлы .pdb, скопированные рядом с файлом .exe. У этих файлов была более старая дата, поэтому я подумал, что они не обновлялись во время выполнения. Я вручную удалил их, Visual Studio создала другую пару и поместила эту новую пару рядом с .exe. Теперь точки останова работают!

Возможно, Visual Studio не может скопировать и ЗАМЕНИТЬ существующие файлы (.dll и .pdb) рядом с .exe, поскольку там есть другие. Так что, если я удалил вручную, VS может создать новый рядом с .exe.

Я думаю, что другие изменения (проверки и т. Д. Из других ответов) вызвали что-то, и Visual Studio скопировала и заменила dll и pdb из папки проекта в папку рядом с exe, так что это было решением. *

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

Может быть, этот ответ кому-нибудь поможет!

6 голосов
/ 06 июня 2017

Только веб-приложения (IIS Express):

  • Щелкните правой кнопкой мыши IIS Express Tray и закройте IIS.
  • Чистый раствор

IIS Tray

5 голосов
/ 02 октября 2012

У меня также была та же проблема, что я перестраивал все решение (включая ссылочные проекты) в x86 (или x64)

Несмотря на то, что я установил все свои проекты на x86 из Configuration Manager (Build-> ConfigManager), некоторые из моих проектов не были настроены на x86.

Так что Просто чтобы убедиться, что щелкните правой кнопкой мыши на проекте и следуйте

проект -> свойства -> вкладка «Отладка», проверьте конфигурацию и платформу.

5 голосов
/ 12 апреля 2017

Вместо того, чтобы делать все эти вещи, просто

Закрыть и снова открыть

решение проблемы

5 голосов
/ 28 января 2017

Свойства проекта (затем выберите конфигурацию сборки)> Вкладка «Сборка»> «Дополнительно»> «Отладочная информация» (раскрывающийся список)

Установите значение 'all' или 'только для pdb', затем пересоберите

4 голосов
/ 05 февраля 2016

Я внимательно прочитал все ответы выше, но ни один из них не решил мою проблему.

В моем случае я собирал библиотеку классов (DLL). Кажется, что никакие модули не загружаются в Debug -> Modules, поэтому я даже не мог загрузить символы вручную.

Мое решение было добавить эту строку в мой код:

System.Diagnostics.Debugger.Launch();

Как только этот код достигнут, возникает исключение, и .NET Framework показывает диалоговое окно, спрашивающее, какую Visual Studio (т.е. новый экземпляр VS 2008, новый экземпляр VS 2013 и т. Д.) Вы хотите использовать для отладки программы. Вы можете выбрать существующий экземпляр VS с загруженным проектом. Это прикрепит процесс к вашему сеансу VS и загрузит все символы, и теперь вы можете отлаживать ваш проект.

Конечно, компиляция должна выполняться с использованием конфигурации Debug, а не Release.

4 голосов
/ 15 ноября 2017

Я знаю, что я опоздал на несколько лет, но я подумал, что сделал что-то не так, и, следуя вышеперечисленным шагам, понял, что по ошибке установил конфигурацию решения 'Release':)

4 голосов
/ 02 апреля 2012

Я интегрировал приложение C # со статической библиотекой, используя VS10 - что я новичок в. Я написал управляемый код DLL для взаимодействия с ними. Я мог бы установить точки останова везде, кроме статической библиотеки. Я получил сообщение, описанное выше - для этого документа не было загружено никаких символов. Я попробовал многие из предложений выше. Я мог видеть, что символы не загружались. Наконец я заметил флажок «Отладка конфигурации», «Включить отладку неуправляемого кода». Это позволило мне установить точки останова в статических функциях lib.

4 голосов
/ 22 августа 2018

У меня была похожая проблема, и я сделал следующее: Debug => Options => General => Снимите флажок «Enable Just My Code». Это сработало для меня ..

3 голосов
/ 06 июня 2012

Для приложения ASP.Net проверьте свойства сайта, вкладка ASP.NET. Убедитесь, что выбрана правильная версия ASP.NET.

...