Почему Visual Studio 2010 не может найти/открыть файлы PDB?

Я пытаюсь использовать OpenCV в VS 2010. Я любитель, и я изучаю первые шаги из вики OpenCV. Однако при попытке отладки моего проекта возникают следующие ошибки:

'C:\Windows\SysWOW64\ntdll.dll', не удается найти или открыть файл PDB 'C:\Windows\SysWOW64\kernel32.dll', не удается найти или открыть файл PDB 'C:\Windows\SysWOW64\kernellbase.dll', не удается найти или открыть файл PDB

У меня есть эти файлы в правильном каталоге, так почему бы им не открыть их? Что мне делать, чтобы исправить эту проблему?

Ответ 1

Сначала измените следующие параметры:

Инструменты → Параметры → Отладка → Символы → Сервер → Да

Затем нажмите Ctrl + F5, и вы увидите удивительные вещи.

Ответ 2

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

Однако, поскольку вы всегда должны пытаться исправить предупреждения компилятора, давайте посмотрим, что мы можем обнаружить. Я не совсем знаком с OpenCV, и вы не ссылаетесь на учебник вики, который вы следуете. Но мне кажется, что проблема заключается в том, что вы используете 64-разрядную версию Windows (о чем свидетельствует папка "SysWOW64" на пути к DLL файлам), но созданный вами материал OpenCV для 32-битной платформы. Поэтому вам может потребоваться перестроить проект с помощью CMake, как описано здесь.

В частности, перечисленные файлы - это системные файлы Windows. Файлы PDB содержат информацию об отладке, которую использует Visual Studio, чтобы вы могли вставлять и отлаживать скомпилированный код. На самом деле вам не нужны файлы PDB для системных библиотек, позволяющие отлаживать ваш собственный код. Но если вы хотите, вы можете загрузить символы для системных библиотек. Перейдите в меню "Отладка", нажмите "Параметры и настройки" и прокрутите список вниз справа, пока не увидите "Включить поддержку исходного сервера". Убедитесь, что опция отмечена. Затем в дереве слева нажмите "Символы" и убедитесь, что выбрана опция "Microsoft Symbol Servers". Нажмите "ОК", чтобы закрыть диалоговое окно, а затем попробуйте восстановить.

Ответ 3

Visual Studio Community Edition 2015

Имел эту ошибку весь день. Я, наконец, исправил это, перейдя в меню "Инструменты" > "Параметры импорта и экспорта" > Reset все параметры > Reset Общие настройки.

После Reset перейдите в меню "Сервис" > "Параметры" > "Отладка" > "Символы" > "Затем установите флажок рядом с серверами Symbol Microsoft.

Запустите приложение в режиме отладки, и он откроет окна, в которых говорится о загрузке символов для кучи разных DLL файлов. Позвольте этому закончить это.

Как только он завершится, он должен снова работать.

Ответ 4

У меня была та же проблема. Оказывается, что, компилируя проект, который я получил от кого-то другого, я не установил правильный проект StartUp (щелкните правой кнопкой мыши по желаемому проекту запуска в проводнике решений и выберите "установить как проект StartUp" ). Может быть, это поможет, приветствует.

Ответ 5

Для VS2013 пользователей, которые оказались здесь, как я:

Tools -> Options -> Debugging -> Symbols

Вы увидите, что поле Cache symbols in this directory: пусто; вы можете либо просмотреть/ввести путь самостоятельно, либо просто нажать кнопку Load all symbols. Появится окно предупреждения, в котором говорится: "Поскольку вы не выбрали каталог с символьным кешем, по умолчанию будет использоваться". Теперь вы увидите C:\Users\XXXX\AppData\Local\Temp\SymbolCache в ранее пустом поле пути. Нажмите Load all symbols второй раз, и вы должны быть установлены. Хит нормально, и только ради усердия, очистите и перестройте свое решение.

Ответ 6

Ссылаясь на первый поток/другую возможность, VS не может открыть или найти файл pdb процесса, когда ваш исполняемый файл работает в фоновом режиме. Я работал с mpiexec и столкнулся с этой проблемой. Всегда проверяйте свой диспетчер задач и убивайте любой процесс exec, который вы собираетесь создать в своем проекте. Как только я это сделал, он отлаживался или строился отлично.

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

Ответ 7

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

Ответ 8

У меня такие же предупреждения. Я не уверен, что это вопрос 32 против 64 бит. Просто загрузили новые символы, и некоторые проблемы были решены, но те, что касаются OpenCV, все еще сохраняются. Это выдержка из выхода с решенной vs нерешенной проблемой:

'OpenCV_helloworld.exe': загружен 'C:\OpenCV2.2\bin\opencv_imgproc220d.dll', не удается найти или открыть PDB файл

'OpenCV_helloworld.exe': загружен 'C:\WINDOWS\system32\imm32.dll', Символы загружены (информация источника удалена).

Код выходит 0, если кто-то спросит.

Программа '[4424] OpenCV_helloworld.exe: Native' вышла с код 0 (0x0).

Ответ 9

У меня была та же проблема. Отладка не работает с материалом, который поставляется с исполняемым файлом OpenCV. вы должны создать свои собственные двоичные файлы.
Затем включите Microsoft Symbol Servers в Debug- > options и settings- > debug- > symbols

Ответ 10

Я столкнулся с той же проблемой. Когда я запускал свой код Unit Test на С++, я получил сообщение об ошибке "Не могу найти или открыть файл PDB".

Журналы

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

Найденная проблема

Когда я впервые загрузил и распаковал файлы WinUnit, основная папка называлась "WinUnit-1.2.0909.1". После того, как я распаковал файл, я переименовал папку в "WinUnit", так как ее легче вводить при настройке проекта Visual Studio. Но, по-видимому, это сломало возможность найти файл PDB, даже если я настраиваю все в соответствии с документацией WinUnit.

Мой фикс

Я изменил имя папки на оригинал, и он работает.

Weird.