Как мне исправить «Точка останова в настоящее время не будет достигнута. Для этого документа не было загружено никаких символов ». предупреждение?

1577

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

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

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

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


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

Instance Hunter
источник
120
При отладке перейдите к представлению Отладка, Windows, Модули. Это покажет информацию о загруженных модулях и статус символа. Вы можете щелкнуть правой кнопкой мыши по модулю и попытаться загрузить символы из другого места.
Полифун
14
Экспресс-издание не имеет представления Модули.
Охотник за экземплярами
12
Хороший вопрос о сборках, не загруженных до тех пор, пока они не понадобятся. Отладчик покажет, что точка останова не будет достигнута, но дисплей изменится / ваша точка останова будет достигнута после загрузки сборки. Обходным решением этой проблемы пользовательского интерфейса было бы вызвать сборку при запуске программы, чтобы принудительно загрузить сборку.
Тим Кокер
1
У меня была та же проблема, и я заметил, что для этой конфигурации сборки, которой у меня не было <DebugSymbols>true</DebugSymbols>в VS2015, я добавил ее вручную, и она работала нормально.
kuskmen
4
Удаление файла .suo могло бы решить эту ужасную проблему в моем проекте
Роланд

Ответы:

1083

Начните отладку, как только вы достигли точки останова или использовали ее Debug > Break All, используйте Debug > Windows > Modules. Вы увидите список всех сборок, которые загружены в процесс. Найдите тот, для которого вы хотите получить отладочную информацию. Щелкните правой кнопкой мыши и выберите «Символ загрузки информации». Вы получите диалог, в котором перечислены все каталоги, в которых он искал файл .pdb для сборки. Проверьте этот список по фактическому местоположению .pdb. Убедитесь, что он не находит старый.

В обычных проектах сборка и ее файл .pdb должны всегда копироваться IDE в ту же папку, что и ваш .exe. Папка bin \ Debug вашего проекта. Убедитесь, что вы удалили один из GAC, если вы играли с ним.

Hans Passant
источник
4
По сути, это было проблемой в моем случае. У нас был посткомпиляция, из-за которой он не считался «кодом пользователя» ... теперь я должен посмотреть, что с этим случилось, но я подтвердил, что без модификаций посткомпиляции символы загружаются. @ Hans спасибо, сэкономил мне несколько минут! отправляет виртуальное пиво
eglasius
29
Речь идет о экспресс-издании, к которому этот ответ, к сожалению, не относится. На самом деле ни один из ответов не работает для меня, я также попытался удалить папку Debug и перестроить.
Николас Рауль
3
Microsoft Visual Studio Express 2013 для Web не имеет опции отладки модулей Windows. Как использовать это исправить в этом случае?
Андрус
3
Как подсказка, включите ваши исключения, чтобы они ломались, где вы хотите (если вы не можете поставить точку останова в начале процесса) ... Затем вы следуете рекомендациям Хана по отладке> Windows> Модули. Найдите проект, в который вы пытались войти, и посмотрите на PATH. если он говорит «C: \ windows \ assembly», то это указывает на dll GAC, а НЕ на проект ...
Энди Дэнджер Ганге
5
у меня была активная конфигурация моего решения для Release, вернув ее обратно на Debug, я решил мою проблему. Этот ответ помог мне «вспомнить», что искать
гилад
437

Сначала попробуйте перестроить свой проект, щелкнув правой кнопкой мыши проект> Перестроить. Если это не сработает, попробуйте очистить проект (щелкните правой кнопкой мыши проект> очистить)

Если это не сработало, проверьте это:

  1. Щелкните правой кнопкой мыши ваш проект
  2. Выберите [Свойства]
  3. Выберите вкладку [Build]
  4. Убедитесь, что [Определить постоянную отладки] и [Определить постоянную TRACE] проверены
  5. Убедитесь, что [Оптимизировать код] не отмечено
  6. Нажмите кнопку [Дополнительно] в нижней части вкладки «Сборка».
  7. Убедитесь, что для [Debug Info:] установлено значение [full]
  8. Нажмите [OK] и перестройте проект ;-)

(шаг 6 генерирует файлы .pdb, это символы отладки)

juFo
источник
40
Убедитесь, что для [Debug Info:] установлено значение [full] - исправьте это для меня! У меня есть несколько конфигураций, настроенных для моего проекта, новые, которые я добавил, не имели этого набора.
Chiefy
1
Это сработало для меня! Но вместо [полного] я смог сделать только для pdb
Аарон Шейвер
42
Оказывается, я был в релизной сборке. яй.
PNDA
2
Если у вас есть смешанный проект C ++ / C # с собственным запуском, убедитесь, что это отладка проекта> Тип отладчика Mixed.
Билл Хоаг
4
Я также должен был убедиться, что это не Properties > Build > Optimize codeбыло проверено .
Jeffaudio
274

Просто что-то простое попробовать - возможно, вы уже пробовали это. Щелкните правой кнопкой мыши Solution в обозревателе решений, выберите «clean solution», это удалит все скомпилированные и временные файлы, связанные с решением .

Перестройте решение и попробуйте снова выполнить отладку.

У меня также были проблемы с точками останова нескольких проектов в решении - некоторые скомпилированы как x86, некоторые как x64.

Патрик
источник
5
Как вы исправили точки останова с несколькими проектами в решении - некоторые скомпилированные как x86, некоторые как x64?
Ричард Ли
3
Если вы используете IISExpress (или эмулятор Azure), файлы в C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ root могут не обновляться, если AssemblyVersion имеет версию 1.0.0.0. Убедитесь, что это что-то вроде 1.0. *, Так что новая версия генерируется каждый раз, когда вы создаете свой веб-проект. Чистое решение не очищает папку временных файлов Интернета.
Майкл Лэнг
1
Это то же самое, что сделать Rebuild All.
Джонатан Вуд
2
@jonathan Wood - я бы с этим согласился. Но в редких случаях Rebuild All может давать немного другие результаты - я знаю, что иногда видел странные различия. Загляните сюда для интересного обсуждения: stackoverflow.com/questions/1247457/…
Патрик
1
Для меня это было просто "Построить" ... "Чистое решение"
Доминик Исайя
238

Отключите опцию «Просто мой код» в настройках «Отладка / Общие».

сублиментных
источник
2
Да, на проекте Windows Phone 8 с пользовательской конфигурацией сборки, это то, что он сделал для меня.
GONeale
2
Работал для меня с Windows Phone 8.1 и VS Community 2015.
Фабиано Араужо
20
Просто чтобы прояснить: в VS 2017 этот параметр находится конкретно в диалоговом окне «Инструмент, параметры» под панелью «Отладка, Общие» (если быть точным, нет панели «Отладка») Флажок называется «Включить только мой код», а не «Просто мой код».
Джазимов
1
Это работает для меня, однако я не вижу значения переменной, когда hover или shift + f9 получают ошибку. Невозможно получить значение local или аргумента, поскольку оно недоступно по указателю этой инструкции, возможно, потому что оно было оптимизировано
Навин Кумар
1
Все еще работает в Visual Studio 2019!
Тоби Колк
149

Перекрестное размещение этого исправления от Hans K, которое я нашел в аналогичной теме >> ЗДЕСЬ << :

Щелкните правой кнопкой мыши по решению -> Свойства

Посмотрите под Общие свойства -> Startup Project

Выберите несколько проектов запуска

выберите Начать действие над проектами, которые нужно отладить.

jp2code
источник
7
Это также обрабатывает ситуации, когда вы пытаетесь отладить веб-проект, который является конечной точкой удаленного взаимодействия .NET, работающей на сервере разработки VS и показывающей «символы не загружены».
D-Sect
1
Это исправило это для меня. Я думаю, что ранее кто-то пытался подключить отладку к локальному серверу IIS вместо отладочной версии IIS, которую использует visual studio.
Даулерс
1
Если вы удалили файл .suo, вы можете потерять настройки решения, выбранные здесь, и вам придется их заново устанавливать
Redeemed1
Сегодня я снова проверил эти параметры после успешной отладки и обнаружил, что мои стартап-проекты каким-то образом превратились в один стартовый проект. Это стоит двойной проверки.
Энтони Де Соуза
64

Выбранный ответ привел меня к решению моей проблемы. Но мне нужно сделать еще несколько вещей:

Даже с выбранным «Отладка» в раскрывающемся списке:

введите описание изображения здесь

А в проекте Properties> Build:

введите описание изображения здесь

Visual Studio не загружал символы в конкретный проект. Таким образом, в этом раскрывающемся списке я выбрал «Диспетчер конфигурации» и увидел, что параметры моего веб-проекта были неверными:

введите описание изображения здесь

введите описание изображения здесь

Затем я установил это в «Отладка», и он начал генерировать .pdbфайл. НО мне нужно вручную скопировать PDB и DLL и положить в папку, которую искал VS (вот где мне помог выбранный ответ):

введите описание изображения здесь

оборота фабрикассетто
источник
1
Я работал в releaseрежиме. Спасибо !!
Дипак Телангре
Ключевым для меня было то, что флажок «Deploy» не был отмечен, поэтому pdb не переустанавливался после сборки
Бен
43

Debug> Windows>Modules , Чтобы увидеть , какие модули были загружены поставить меня в правильном направлении.

В моем случае IIS Express загружал другую DLL из временных файлов ASP.NET.

Решение?

  1. Перейти к C:\Users\<YOUR USER>\AppData\Local\Temp\Temporary ASP.NET Files\vs
  2. Удалить все в этом каталоге!
James S
источник
Это была моя проблема, папка должна быть заполнена битыми DLL, которые загружались в качестве предпочтения.
Гбертон
8
Это сработало для меня, за исключением моего случая, каталог, который мне пришлось очистить, был C: \ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files \ vs \
Энди
У меня была похожая проблема, когда у меня уже было установлено это приложение, и оно загружало эту DLL вместо той из моего проекта без связанного файла PDB. После удаления старого приложения проблема была решена для меня. Спасибо!
Ленни К
42

Я смог исправить ошибку, просто установив опцию в «Присоединить к процессу» на «Автоматически определять тип кода для отладки», как показано на прикрепленном скриншоте.

Просто следуйте инструкциям ниже:

  • Перейти к отладке из строки меню
  • Нажмите на Присоединить к процессу
  • Рядом с опцией Присоединить к , нажмите на Выбрать кнопку
  • Выберите тип кода окно
  • Теперь выберите параметр « Автоматически определять тип кода для отладки» и нажмите кнопку «ОК».

Исправлена ​​ошибка отладки

theITvideos
источник
10
Для тех, кто попробовал все на этой странице, я исправил свою проблему, переключившись на «Managed (v4.5, v4.0) code»!
stevekrzysiak
Переключение на «Managed (v4.5, v4.0)» исправило это и для меня с отладкой приложения DNN ASP.Net. Спасибо!
Ммм
Переключение с «Автоматически определять тип кода для отладки» на «Управляемый (v4.6, v4.5, v4.0)» работал для меня. У меня есть решение с 2 библиотеками классов, одна из которых доступна через COM, обе предназначены для фреймворка 4.6.1.
Джорб
Я выбрал неправильную опцию («.NET Core» вместо «Managed v4.6»). Я выбрал «Автоматически определять ...», и это сработало! Первоначально я нашел это решение в этой записи блога blog.simontest.net/… .
Евгений Набоков
41

Иногда, даже несмотря на то, что он выдает эту ошибку, он breakpointвсе равно получает удар, поэтому просто игнорируйте ошибку. Это происходит довольно часто в ViewsАн MVC web app.

Серж Саган
источник
7
На самом деле это должно быть где-то наверху. Я потратил много времени, выполняя все ответы выше, но точка останова действительно будет достигнута. Просто проверьте :) Кроме того, это было настольное приложение WPF.
Бартош
4
Aspx, по-видимому, компилируется по требованию, поэтому информация об
отладке
Также для UnitTesting - вам нужно подождать несколько секунд, а затем его ударили.
Давид Рафаэли
Я думаю, что комментарий @aeroson - это то, с чем я столкнулся. Одна страница загружала точки останова, другая - нет. Здесь попробовал все виды ответов, затем обновил страницу и загрузил точки останова.
Goodeye
спасибо ... копаться в течение получаса и просто понял, что точка останова все еще получает удар ...
Кайл Хуан
39

Проверьте, отсутствует ли ваш файл .pbd в папке bin / Debug. Если это так, перейдите в «Свойства» вашего проекта, выберите «Построить», а затем «Дополнительно» в нижней части. В появившемся окне выберите «полный» в разделе «Отладочная информация». Это была моя проблема, и я решил ее.

Показывает, где найти настройки

Arne H. Bitubekk
источник
Я бы посоветовал всем, кто заходит на эту страницу, убедиться, что генерируется pdb, так как это было проблемой для меня.
EatATaco
Спасибо! "только для pdb" (а не полный) было достаточно. Также «Advanced» - это кнопка внизу Build.
Грег Литтл
где должны генерироваться pdbs?
Юлка
1
Спасибо, это исправило это для меня после того, как я сделал новые преобразования Web.config и удалил стандартные конфигурации (например, Web.Debug.config), которые предоставляет VS 2017.
Кен Палмер
1
Перепробовал множество других опций (потрачено почти 2 часа) Этот «полный» вариант исправил мою проблему. Спасибо!
SoftSan
29

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

Решение было снять это. Расположение флажка «Оптимизировать код»

Sandra
источник
2
Это тоже была моя проблема, и я прошел все вышеупомянутые решения один за другим, ничего не получалось.
antikbd
Я отключил эту опцию, чистое решение, восстановленное решение и т. Д. VS всегда считал модуль «Оптимизированным». Единственный способ заставить VS обновить отладочную информацию - увеличить версию сборки модуля.
alphanoch
Единственное решение, которое работает для меня, # для вас (# = ++++), но я могу голосовать только один раз
Луис Лопес
27

Просто проверьте, находится ли ваше решение в режиме выпуска.

Тино Хосе Танниппара
источник
1
Потребовалось почти 4 часа, чтобы выяснить эту проблему. спасибо
Null Pointer
23

Попробуйте запустить Visual Studio в качестве администратора в Windows.

Энди
источник
1
В итоге мне нужно было запустить msvsmon в качестве администратора на удаленной машине.
Билл Хоаг
Это не решение, которому люди должны следовать. Если это решит проблему, вам следует сосредоточиться на том, зачем вам нужны права администратора, чтобы VS мог читать содержимое файла .pdb вашего проекта.
Джазимов
@ Джазимов Я не согласен. Принимая во внимание, что я хотел бы провести время, исследуя это, в моем случае это решило мою проблему и позволило мне продолжать работать, поскольку я уверен, что это сделало и для других. Если вы хотите изучить его и улучшить этот ответ, не стесняйтесь, вот для чего он нужен.
Энди
Чтобы быть ясным: я понимаю, что это решило вашу проблему с Visual Studio, это не то, что я оспаривал. Я оспариваю рекомендацию о том , как другие принимают работает в IDE , как в растворе , а не просто в растворе. Если запуск среды IDE в качестве администратора устраняет проблему, то эту информацию следует использовать для устранения фактической основной причины, чтобы в среде IDE не требовались права администратора для правильной работы.
Джазимов
21

В моем случае я пытаюсь отладить в режиме реверсирования. Как только я переключаю его в режим отладки. Работает

Адитья Сай
источник
15

Вам нужно включить «Генерировать отладочную информацию» в настройках компилятора

DS.
источник
1
Где это должно быть?
MushyPeas
10
Это так же, как ответ juFo - Project> Properties> Build> Advanced> Debug Info> Full (или только для pdb)
Джереми Томпсон
Послушай Джереми Томпсена. Это исправило проблему для меня.
Thorkil Værge
12

->Параметры отладки ->Общие ->Снимите флажок для "Enable Just My Code "

Это сработало для меня.

abdallah mahmoud
источник
1
Похоже, что это может быть настройка по умолчанию, которую стоит проверить, обновляя VS до более новой версии (как это случилось со мной).
Агамемнон
10

Мы нашли причину нашей проблемы. Этот код использовал атрибут «CodeBehind» в директиве Page файла .aspx вместо атрибута «CodeFile» (ASP.NET 2.0 и выше). После нескольких дней отчаяния простой поиск и замена решили проблему.

cjo30080
источник
10

Параметр «Начать отладку, отладка + модули Windows +» не существует в выпуске Microsoft Visual Studio Express 2013.

Снятие отметки «Использовать управляемый режим совместимости» в меню « Параметры» Отладка исправляет это.

Andrus
источник
10

Проверьте свой Solution Configurationвыпадающий список. Убедитесь, что вы выбрали Debug, а не Release.

zs2020
источник
Спасибо @ zs2020
Хуссейн Мир
9

Я перепробовал все вышеупомянутое, но ничего не получалось. [Очистить решение, проверить файлы PDB и т. Д.]

Даже публикация того же решения не решила проблему.

Затем я вернулся к тому, что я обычно делаю, чтобы решить (обмануть эту упрямую Visual Studio)

Все, что я сделал, это сделал преднамеренное изменение в коде и опубликовал решение. Затем я отменил изменения и опубликовал снова.

Вуаля [PDB-файлы, избавленные от злых духов] .. Не умное решение, но это сработало ..: - |

Махеш
источник
7

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

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

Лоток IIS

Кристиан Голлхардт
источник
Я попробовал многие другие предложения в других ответах, многие из которых помогли мне в прошлом, но сегодня этот помог. В моем случае у меня есть несколько веток, и я думаю, что IIS Express каким-то образом застрял в другой ветке и не обновлялся с веткой, которую я пытался отлаживать, несмотря на мои многочисленные попытки очистить и восстановить.
Крис Х
6

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

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

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

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

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

Tratak
источник
6

Вещи, которые нужно проверить, чтобы быть понятным: убедитесь, что у вас установлена ​​конфигурация «Отладка», а не «Выпуск». Вы можете отлаживать стартовый проект в режиме «Release», но не можете ссылаться на библиотеку классов.

Саи Чакрадхар Сана
источник
6

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

Установите «all» или «pdb-only», затем перестройте

Sinaesthetic
источник
я сделал pdb_only, а также очистил и перезапустил браузер
Jason
6

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

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

решение это решит проблему

kselva
источник
Я работал в Microsoft Visual Studio 2013 в разделе: Файл> Закрыть решение, затем Файл> Открыть решение (должен быть предварительно загружен в ту же папку, в которой он находился). Точки останова мгновенно перешли от желтого флага к круглому красному. Тогда спасибо.
Зарголд
OMG гений! Спасибо!!!
AresDev
6

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

Мухамед Красники
источник
это также работает для меня
Мохаммед Эльшораки
6

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

Инструмент -> Параметры -> Отладка -> Общие -> (снимите флажок) Параметр «Требовать, чтобы исходные файлы точно соответствовали исходной версии»

tfa
источник
6
  1. Чистый раствор и восстановление
  2. Проверьте, что конфигурация установлена ​​на Debug
  3. Убедитесь, что файл PDB находится в папке отладки сам
  4. В меню «Отладка» выберите «Включить все точки останова».
Bimal
источник
6

Проверьте, являются ли следующие два параметра одинаковыми в Visual Studio:

Щелкните правой кнопкой мыши тестовый проект, перейдите на вкладку «Свойства», «Построить» и посмотрите на цель платформы.

У меня все установлено на "Любой процессор", поэтому x64

введите описание изображения здесь

В строке главного меню выберите «Тест», «Настройки теста», « Архитектура процессора по умолчанию».

Мой был установлен на X86

введите описание изображения здесь

Изменение этого значения на X64 в соответствии с вышеуказанными настройками заставило работать встроенное меню «Debug Test (s)» в Visual Studio и ударило по точкам останова, которые ранее игнорировались с сообщением «В данный момент точка останова не будет достигнута. Для этого документа не было загружено никаких символов ».

Обновить:

Для Visual Studio 2019 меню были немного перемещены: введите описание изображения здесь

Майк
источник
5

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

Нил Уокер
источник
1
Могу ли я поднять 10K раз? Хуже всего то, что я думаю, что искал это в Google примерно 10 раз сейчас, и каждый раз - одна и та же глупая ошибка. Возможно, Microsoft могла бы намекнуть это пользователю?
tfrascaroli