Почему Visual Studio 2010 не может найти / открыть файлы PDB? - PullRequest
80 голосов
/ 27 января 2011

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

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

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

Ответы [ 11 ]

123 голосов
/ 15 ноября 2011

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

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

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

20 голосов
/ 27 января 2011

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

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

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

9 голосов
/ 02 апреля 2016

Visual Studio Community Edition 2015

У меня была эта ошибка весь день. Наконец, я исправил это, выбрав «Инструменты»> «Параметры импорта и экспорта»> «Сбросить все параметры»> «Сбросить общие настройки».

После сброса перейдите в «Инструменты»> «Параметры»> «Отладка»> «Символы»> - «Установите флажок рядом с Microsoft Symbol Servers».

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

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

3 голосов
/ 21 февраля 2013

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

1 голос
/ 01 июня 2015

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

Tools -> Options -> Debugging -> Symbols

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

1 голос
/ 13 июля 2012

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

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

0 голосов
/ 28 августа 2018

Если бы здесь была та же проблема, но сработало другое решение.

Сначала я попробовал следующее, ни один из которых не работал:

  1. Загрузка символов в соответствии с предложением seanlitow

  2. Удалить / добавить ссылку на PresentationFramework и PresentationCore

  3. Перезагрузка системы

Решением было отменить последние несколько изменений, которые я сделал в своем коде. Я только что добавил пару радиокнопок и обработчиков событий для проверенных и непроверенных событий. После удаления моих последних изменений все скомпилировано. Затем я добавил свои точные изменения и все скомпилировано правильно. Я не понимаю, почему это сработало - единственное, о чем я могу думать, это проблема с моим VS решением. В любом случае, если ни одно из других предложений не сработает, вы можете попытаться отменить ваши последние изменения. ПРИМЕЧАНИЕ: если вы закроете и снова откроете Visual Studio, ваша история отмен будет потеряна .. поэтому вы можете попробовать это, прежде чем закрыть VS.

0 голосов
/ 15 мая 2013

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

Журналы

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

Нашли проблему

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

Мое исправление

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

Странно.

0 голосов
/ 25 декабря 2012

У меня была такая же проблема.Отладка не работает с тем, что поставляется с исполняемым файлом OpenCV.Вы должны создать свои собственные бинарные файлы.
Затем включите серверы Microsoft Symbol в меню Отладка-> Параметры и настройки-> Отладка-> Символы

0 голосов
/ 25 июня 2012

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

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

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

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

Программа '[4424] OpenCV_helloworld.exe: Native' завершила работу с кодом 0 (0x0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...