Подтвердить что ты не робот

Отладочная информация не может быть найдена или не соответствует визуальной студии

Я скопировал существующий проект и переименовал папку. Теперь я получаю эту ошибку при попытке скомпилировать приложение

Отладочная информация не найдена или не соответствует. Символы не загружены.
Вы хотите продолжить отладку?

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

4b9b3361

Ответ 1

Основная причина в том, что у вас нет соответствующих pdb и exe.

Некоторые возможные решения:

  • Вы компилируете в выпуске вместо debug
  • Вам нужно очистить/построить или перестроить
  • У вас нет файлов pdb, сгенерированных в том же каталоге, что и exe
  • У вас есть несоответствующий pdb, возможно, скопированный источник новее, чем сегодняшний день, и что-то не создается должным образом.
  • Попробуйте очистить все файлы отладочных объектов
  • Вы присоединяетесь к процессу, который вы начали с другого места, где существуют ваши exe exe и pdb.
  • Перезапустить Visual Studio

Ответ 2

Вероятно, вы отключили отладочную информацию для своего проекта:

  • Щелкните правой кнопкой мыши по вашему проекту → Свойства
  • Свойства конфигурации → Linker → Debugging
  • Переключить "Генерировать информацию отладки" от "Нет" до "Да"

Восстановите проект и повторите попытку, он должен работать без сообщения:)

Ответ 3

Это случается со мной время от времени, при отладке кода и внесении изменений кажется, что визуальная студия кэширует информацию pdb, и иногда она застревает. Выполнение решения Rebuild, удаление pdb и создание нового не устраняет проблему.

Конечно, у меня есть сводная информация об отладке и все, что ей нужно, особенно потому, что это происходит при отладке кода несколько раз.

Visual Studio, похоже, довольна встроенной памятью pdb и отказывается ее обновлять, независимо от временных меток или даже изменений размера в pdb.

Единственный способ reset - выйти из Visual Studio (IDE) и снова перезапустить его.

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

Удача

Ответ 4

Я только что столкнулся с этой ошибкой в ​​VS2012. Это определенно вызвано ошибкой в ​​Visual Studio, которая проявляется в ситуациях, когда локальный файл PDB основного проекта имеет то же имя, что и окончательный файл PDB для всего исполняемого файла (даже если эти два находятся в разных каталогах!)

Рассмотрим этот пример.

Решение состоит из трех проектов: main, a и b. main - это проект верхнего уровня для исполняемого файла, а a и b - библиотеки, связанные с main.

Во всех трех проектах переменная $(IntDir) установлена ​​на $(SolutionDir)\$(Configuration)\$(ProjectName)\. Это означает, что проект main передает свои промежуточные файлы в Debug\main\, project a - to Debug\a\ и т.д.

В настройках C/C++ -> Output Files все три проекта имеют значение Program Database File Name, установленное на $(IntDir)$(TargetName).pdb. Это означает, что проект main создает локальный файл PDB как Debug\main\main.pdb, project b как Debug\b\b.pdb и т.д.

Наконец, в настройках Linker -> Debugging проекта main значение Generate Program Database File установлено на $(OutDir)$(TargetName).pdb. Это означает, что глобальный файл PDB для всего исполняемого файла будет сгенерирован как Debug\main.pdb.

Обратите внимание, что в этой настройке каждый файл PDB создается в своем собственном отдельном каталоге.

В этой настройке вы получите Отладочная информация не может быть найдена или не соответствует ошибке, если вы попытаетесь запустить программу под отладчиком. И если вы посмотрите на файл Debug\main.pdb (который будет существовать), вы заметите, что он точно такой же, как и файл Debug\main\main.pdb! То есть так как локальный PDB для main смог переписать то, что должно было быть глобальным PDB для окончательного исполняемого файла. То есть отладчик прав, чтобы жаловаться, что PDB файл является "неправильным". Это действительно неправильно.

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

Обходной путь, устраняющий эту проблему, заключается в том, чтобы дать локальному PDB проекта main другое имя. Например, просто перейдите в C/C++ -> Output Files для проекта main и измените значение Program Database File Name на $(IntDir)$(TargetName)_local.pdb (или на $(IntDir)12345.pdb, если вы этого желаете). Это устранит конфликт и решит проблему.

Ответ 5

Включить создание PDB с помощью:

Щелкните правой кнопкой мыши по MyProject > Properties > Debugging:

  • C/C++ > General > Debug Information Output = Program Database (/Zi)
  • Linker > Debugging > Generate Debug Info = Yes (/DEBUG)

Очистите MyProject, перезапустите Visual Studio (просто убедитесь), перестройте MyProject. Затем папка вывода должна содержать файлы *.pdb.

Если вы отлаживаете оптимизированный/выпущенный код, подумайте об отключении оптимизации с помощью

  • C++ > Optimization > Optmization = Disabled (/Od)

Ответ 6

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

Решение состоит в том, что если у вас есть много проектов в решении, вы должны пометить любой проект (конкретный, который вы должны решить) как "Установить как проект запуска". Щелкните правой кнопкой мыши на этом конкретном проекте и нажмите "Установить как проект запуска".

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

Ответ 7

Файл pdb или Program Database отсутствует (в основном, путь был изменен и больше не может быть найден компилятором). Подробнее см. .

Ответ 8

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

Удачи.

Ответ 9

Перезапуск Visual Studio может исправить один экземпляр этой проблемы.

Ответ 10

Щелкните правой кнопкой мыши свой проект в браузере решений = > Очистить = > Сборка. То есть, если ваша сборка генерирует .pdb вообще (посмотрите в целевой каталог) Если нет, вы должны включить отладку по шагам, указанным в других сообщениях.

Ответ 11

Скорее всего, есть и другие причины, такие как несоответствие файла .pdb/.exe, что-то не было построено/перестроено, но у меня был аналогичный случай на Visual studio 2013 -

Что-то делать с виртуальной встроенной функцией - поэтому я подозреваю.

В моем случае отладчик прыгал в середине другой функции С++, а не той, которая была вызвана. Переход был от исходного кода на 11 строк исходного кода, но я не могу объяснить, почему произошло много просчетов. Благодаря простым перераспределениям функций я избавился от этой проблемы.

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

Не видел такого поведения в любой другой визуальной студии.

Ответ 12

Эта проблема беспокоила меня в течение долгого времени. AnT anwser очень полезен. Основная идея: У вас нет двух файлов pdb с тем же именем, даже если они не находятся в одном каталоге.

Это моя ситуация: у меня есть проекты буксировки "FooBar" и "FooBarDll", первый - exe, а второй - dll. Я установил оба проекта Target Name как "FooBar", чтобы они генерировали "FooBar.exe" и "FooBar.dll" соответственно.

Тогда я установил

  • "Общий → Промежуточный каталог" должен быть "$ (OutDir)\$(ProjectName) \"
  • "C/С++ → Файлы вывода → Имя файла базы данных программы" будет "$ (IntDir) $(TargetName).pdb"
  • "Linker → Debugging → Создать файл базы данных программы", который должен быть $(OutDir) $(TargetName).pdb "

Итак, я получаю эти файлы:

  • Debug\FooBar.exe
  • Debug\FooBar.pdb//С++ pdb
  • Debug\FooBar\FooBar.pdb//Linker pdb

  • Debug\FooBar.dll

  • Debug\FooBar.pdb//С++ pdb снова!
  • Отладка \FooBarDll\FooBar.pdb//Linker pdb

Мое решение заменяет каждое "TargetName" на "ProjectName", затем я получаю:

  • Debug\FooBar.exe
  • Debug\FooBar.pdb//С++ pdb
  • Debug\FooBar\FooBar.pdb//Linker pdb

  • Debug\FooBar.dll

  • Debug\FooBarDll.pdb//С++ pdb
  • Отладка \FooBarDll\FooBarDll.pdb//Linker pdb

Тогда конфликта нет!

Дать C/С++ pdb суффикс может быть лучше, например: "C/С++ → Файлы вывода → Имя файла базы данных программы" - "$ (IntDir) $(ProjectName) _C.pdb"

Ответ 14

Любопытно, мне сопутствует, что мне нужно было изменить имя папки:

...\Custom Librarry (MyDll.dll(

к

...\Custom Librarry (MyDll.dll)

просто закрыв скобку, в которой он работает!