Почему Visual Studio 2010 не может найти / открыть файлы PDB?
Я пытаюсь использовать OpenCV в VS 2010. Я - любитель, и я изучаю первые шаги из OpenCV wiki. Однако при попытке отладки моего проекта я получаю следующие ошибки:
"C:\Windows\SysWOW64\ntdll.dll", не удается найти или открыть файл PDB "C:\Windows\SysWOW64\kernel32.dll", не удается найти или открыть файл PDB "C:\Windows\SysWOW64\kernellbase".dll', не могу найти или открыть файл PDB
У меня есть эти файлы в правильном каталоге, так почему он не может открыть их? Что я должен сделать, чтобы решить проблему?
11 ответов
Сначала измените следующие параметры:
Сервис -> Параметры -> Отладка -> Символы -> Сервер -> Да
Затем нажмите Ctrl+F5, и вы увидите удивительные вещи.
Я уверен, что это предупреждения, а не ошибки. Ваш проект должен работать нормально.
Однако, поскольку вы всегда должны исправлять предупреждения компилятора, давайте посмотрим, что мы можем обнаружить. Я совсем не знаком с OpenCV, и вы не ссылаетесь на руководство по вики, которое вы читаете. Но мне кажется, что проблема в том, что вы работаете с 64-битной версией Windows (о чем свидетельствует папка "SysWOW64" в пути к файлам DLL), но вы пытаетесь создать материал OpenCV, который вы пытаетесь для 32-битной платформы. Так что вам может потребоваться перестроить проект с использованием CMake, как описано здесь.
В частности, перечисленные файлы являются системными файлами Windows. Файлы PDB содержат отладочную информацию, которую Visual Studio использует для того, чтобы вы могли входить и отлаживать скомпилированный код. На самом деле вам не нужны файлы PDB для системных библиотек, чтобы иметь возможность отлаживать свой собственный код. Но если вы хотите, вы можете скачать символы для системных библиотек. Перейдите в меню "Отладка", нажмите "Параметры и настройки" и прокрутите вниз список справа, пока не увидите "Включить поддержку исходного сервера". Убедитесь, что опция включена. Затем в древовидном представлении слева нажмите "Символы" и убедитесь, что выбран параметр "Серверы символов Microsoft". Нажмите кнопку ОК, чтобы закрыть диалоговое окно, а затем попробуйте восстановить.
Visual Studio Community Edition 2015
У меня была эта ошибка весь день. Я наконец исправил это, выбрав Инструменты> Параметры импорта и экспорта> Сбросить все параметры> Сбросить общие настройки.
После сброса перейдите в "Инструменты"> "Параметры"> "Отладка"> "Символы" - "Затем установите флажок рядом с Microsoft Symbol Servers".
Запустите ваше приложение в режиме отладки, и оно откроет окна, сообщающие, что оно загружает символы для нескольких различных DLL-файлов. Позвольте этому закончить делать это.
Как только он завершится, он должен снова работать.
У меня такая же проблема. Оказывается, что при компиляции проекта, который я получил от кого-то другого, я не установил правильный проект StartUp (щелкните правой кнопкой мыши по нужному проекту запуска в обозревателе решений и выберите "установить как StartUp Project"). Может быть, это поможет, ура.
Для пользователей VS2013, которые оказались здесь, как и я:
Tools -> Options -> Debugging -> Symbols
Вы увидите, что Cache symbols in this directory:
поле пустое; Вы можете либо просмотреть / ввести путь самостоятельно, либо просто нажать кнопку Load all symbols
кнопка. Появится окно с предупреждением "Так как вы не выбрали каталог кэша символов, будет использоваться значение по умолчанию". Теперь вы увидите C:\Users\XXXX\AppData\Local\Temp\SymbolCache
в ранее пустом поле пути. Нажмите Load all symbols
во второй раз, и вы должны быть установлены. Хит хорошо, и только ради усердия, очистить и восстановить ваше решение.
Обращаясь к первому потоку / другой возможности, VS не может открыть или найти pdb-файл процесса, когда ваш исполняемый файл работает в фоновом режиме. Я работал с mpiexec и столкнулся с этой проблемой. Всегда проверяйте свой диспетчер задач и уничтожайте любой exec-процесс, который вы собираетесь встроить в ваш проект. Как только я это сделал, он отлажен или построен нормально.
Кроме того, если вы попытаетесь продолжить с предупреждением, точки останова не будут достигнуты, и у него не будет текущего исполняемого файла.
Если бы здесь была та же проблема, но сработало другое решение.
Сначала я попробовал следующее, ни одно из которых не сработало:
Загрузите символы как предложено seanlitow
Удалить / Добавить ссылку на PresentationFramework и PresentationCore
- Перезагрузите систему
Решение состояло в том, чтобы отменить последние несколько изменений, которые я сделал в своем коде. Я только что добавил пару радиокнопок и обработчиков событий для проверенных и непроверенных событий. После удаления моих последних изменений все скомпилировано. Затем я добавил свои точные изменения обратно, и все правильно скомпилировано. Я не понимаю, почему это сработало - единственное, о чем я могу думать, это проблема с моим VS Solution. В любом случае, если ни одно из других предложений не сработает, вы можете попытаться отменить самые последние изменения. ПРИМЕЧАНИЕ: если вы закроете и снова откроете Visual Studio, ваша история отмен будет потеряна.. поэтому вы можете попробовать это, прежде чем закрыть VS.
Я обнаружил, что эти ошибки иногда возникают из-за отсутствия прав при компиляции проекта, поэтому я запускаю от имени администратора, чтобы заставить его работать должным образом.
У меня такие же предупреждения. Я не уверен, что это вопрос 32 против 64 бит. Просто загрузили новые символы и некоторые проблемы были решены, но те, которые касаются OpenCV, все еще сохраняются. Это выдержка из вывода с решенной и нерешенной проблемой:
'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).
Я столкнулся с той же проблемой. Когда я запустил мой модульный тест на коде C++, я получил сообщение об ошибке "Не удается найти или открыть файл PDB".
бревна
Когда я посмотрел журнал вывода в Visual Studio, то увидел, что он смотрит не в ту папку. Я переименовал папку WinUnit, но что-то в коде WinUnit искал файл PDB, используя старое имя папки. Я предполагаю, что они жестко закодировали это.
Нашел проблему
Когда я впервые скачал и распаковал файлы WinUnit, основная папка называлась "WinUnit-1.2.0909.1". После того, как я распаковал файл, я переименовал папку в "WinUnit", поскольку ее легче набирать во время установки проекта Visual Studio. Но, видимо, это нарушило возможность поиска файла PDB, хотя я все настроил в соответствии с документацией WinUnit.
Мое исправление
Я изменил имя папки обратно на оригинал, и это работает.
Weird.
У меня такая же проблема. Отладка не работает с тем, что поставляется с исполняемым файлом OpenCV. Вы должны построить свои собственные бинарники.
Затем включите серверы Microsoft Symbol в меню "Отладка"> "Параметры и настройки"> "Отладка"> "Символы".