it-swarm.com.ru

Почему 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

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

77
HamidRezaHamidiEsfahani

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

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

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

123
seanlitow

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

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

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

19
Cody Gray

Visual Studio Community Edition 2015

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

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

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

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

8
Nobody

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

3
Jurek Stefanowicz

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

Tools -> Options -> Debugging -> Symbols

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

2
ahall

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

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

1
Mpi

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

Логи

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

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

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

My Fix

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

Weird.

0
user2384458

У меня такие же предупреждения. Я не уверен, что это вопрос 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).

0
sparaflAsh

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

0
SinisterRainbow

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

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

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

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

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

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

0
Thomas Bailey

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

0
john ktejik