Чому Visual Studio 2010 не може знайти / відкрити файли PDB?


83

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

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

У мене є ці файли в потрібному каталозі, так чому ж він не може їх відкрити? Що робити, щоб усунути проблему?


Що ви маєте на увазі під "в потрібному каталозі"? PDB знаходиться в тій же папці, що і DLL?
харпер

1
@harper: Враховуючи, що розглядаються бібліотеки - це системні файли Windows, PDB, ймовірно, не повинні знаходитися в тій же папці, що і DLL. Бібліотеки DLL знаходяться в каталозі C: ​​\ Windows \ SysWOW64, але символи PDB, швидше за все, будуть у створеному вами каталозі кешу символів. Той, який ви вказали в параметрах налагодження Visual Studio.
Коді Грей

@Cody Gray: Чи можете ви скопіювати PDB в каталог (вручну) або вам потрібно використовувати сервери символів Microsoft (Source)?
харпер

@harper: Я не уявляю, чи так буде працювати. Я не впевнений , якщо Visual Studio буде знайти символи PDB там (хоча я думаю , що це буде ). Але, що стосується ліцензування, я майже впевнений, що вам доведеться використовувати сервери символів MS. Як ще ви збираєтесь отримати файли PDB? Я також не впевнений, чому ви хочете це бойкотувати. У Visual Studio вбудована вся ця функціональність, то чому б не скористатися нею? Він призначений для локального кешування символів, тому вам не доведеться перезавантажувати їх кожного разу. Навіть не помічаю, як це вже відбувається.
Коді Грей

@ Коді Грей: Я не хочу нічого бойкотувати. У мене навіть немає цих PDB. Але мені цікаво, як це працює.
харпер

Відповіді:


124

Спочатку змініть наступні параметри:

Інструменти -> Параметри -> Налагодження -> Символи -> Сервер -> Так

Потім натисніть Ctrl+, F5і ви побачите дивовижні речі.


2
Оце Так! Це було чудово! Дякую за цю відповідь. +1 для вас!
Matthew Crews

Щоб бути зрозумілим, це завантажить символи лише один раз, чи не так? Це взагалі не завадить мені працювати в автономному режимі?
Seanny123

1
Чи знаєте ви пряме посилання для його завантаження? Я працюю в закритій мережі без доступу до Інтернету.
levkaster

2
Емм ... Контроль F5 не приєднує налагоджувач AFAIK. Отже, ця відповідь втрачає суть.
buckley

1
Я зробив те саме, що ти сказав. але тепер показано, що якийсь символ завантажений, а для решти інших файлів
pdb

20

Я майже впевнений, що це попередження , а не помилки. Ваш проект все одно повинен працювати нормально.

Однак, оскільки ви завжди повинні намагатися виправити попередження компілятора, давайте подивимось, що ми можемо виявити. Я взагалі не знайомий з OpenCV, і ви не посилаєтесь на підручник з wiki, за яким стежите. Але мені здається, що проблема в тому, що у вас запущена 64-розрядна версія Windows (про що свідчить папка "SysWOW64" у шляху до файлів DLL), але те, що ви намагаєтеся створити OpenCV, створено для 32-розрядної платформи. Тому вам може знадобитися відновити проект за допомогою CMake, як пояснено тут .

Більш конкретно, перелічені файли - це системні файли Windows. Файли PDB містять інформацію про налагодження, яку використовує Visual Studio, щоб дозволити вам входити та налагоджувати скомпільований код. Насправді вам не потрібні файли PDB для системних бібліотек, щоб мати можливість налагоджувати ваш власний код. Але якщо ви хочете, ви також можете завантажити символи для системних бібліотек. Перейдіть до меню "Налагодження", натисніть "Параметри та налаштування" та прокрутіть поле списку праворуч, поки не побачите "Увімкнути підтримку вихідного сервера". Переконайтеся, що цей параметр позначений. Потім у дереві зліва клацніть на «Символи» та переконайтеся, що вибрано параметр «Сервери символів Microsoft». Натисніть OK, щоб закрити діалогове вікно, а потім спробуйте відновити.


7
Я не дуже впевнений, що я маю сказати у відповідь на це. Шукаєте додаткової допомоги? Або ви просто залишаєте коментар? Тому що якщо ви шукаєте додаткової допомоги, вам доведеться пояснити, що саме пішло не так, коли ви «спробували це», і що ви маєте на увазі під словом «не спрацювало». Ми всі програмісти, ви знаєте, не так подається корисний звіт про помилку.
Коді Грей

Вибачте, чомусь моє ціле повідомлення не було вставлено. Але з тих пір я виправив це за допомогою наступного методу. stackoverflow.com/questions/1468726 / ...
daveomcd

10

Visual Studio Community Edition 2015

Маю цю помилку цілий день. Нарешті я це виправив, перейшовши в Інструменти> Параметри імпорту та експорту> Скинути всі параметри> Скинути загальні налаштування.

Після скидання перейдіть до Інструменти> Параметри> Налагодження> Символи> - Потім поставте прапорець біля Сервера символів Microsoft.

Запустіть програму в режимі налагодження, і вона відкриє вікна із повідомленням, що завантажує символи для безлічі різних файлів .dll. Нехай закінчить це робити.

Як тільки він завершиться, він повинен запрацювати знову.


3

У мене була та сама проблема. Виявляється, під час складання проекту, отриманого від когось іншого, я не встановив правильний проект StartUp (клацніть правою кнопкою миші на бажаному проекті запуску в провіднику рішень і виберіть «встановити як проект StartUp»). Можливо, це допоможе, ура.


1

Посилаючись на перший потік / іншу можливість VS неможливо відкрити або знайти файл pdb процесу, це коли ваш виконуваний файл працює у фоновому режимі. Я працював з mpiexec і зіткнувся з цим питанням. Завжди перевіряйте свого диспетчера завдань і вбивайте будь-який процес виконання, який ви збираєтесь вбудувати у свій проект. Після того, як я це зробив, це налагодило або створило чудово.

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


1

Для користувачів VS2013, які опинились тут, як і я:

Tools -> Options -> Debugging -> Symbols

Ви побачите, що Cache symbols in this directory:поле порожнє; Ви можете переглядати / вводити шлях самостійно або просто вперед і натиснути Load all symbolsкнопку. З'явиться вікно попередження із повідомленням "Оскільки ви не вибрали каталог кешу символів, буде використано за замовчуванням". Тепер ви побачите C:\Users\XXXX\AppData\Local\Temp\SymbolCacheв раніше порожньому полі шляху. Клацніть Load all symbolsвдруге, і ви повинні бути налаштовані. Натисніть нормально, і просто заради старанності почистіть і відновіть своє рішення.


0

Я виявив, що ці помилки іноді пов'язані з відсутністю дозволів під час компіляції проекту, тому я працюю як адміністратор, щоб він працював належним чином.


0

Я маю ті самі попередження. Я не впевнений, що мова йде про 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: Рідна' вийшла з кодом 0 (0x0).


0

У мене була та сама проблема. Налагодження не працює з матеріалами, що постачаються з виконуваним файлом OpenCV. ви повинні побудувати власні бінарії.
Потім увімкніть сервери символів Microsoft у розділі Налагодження-> параметри та налаштування-> налагодження-> символи


0

Я натрапив на те саме питання. Коли я провів свій модульний тест на коді C ++, я отримав повідомлення про помилку "Не вдається знайти або відкрити файл PDB".

Журнали

Коли я подивився журнал вихідних даних у Visual Studio, то побачив, що він шукає в неправильній папці. Я перейменував папку WinUnit, але щось у коді WinUnit шукало файл PDB, використовуючи старе ім'я папки. Думаю, вони це жорстко закодували.

Знайшов проблему

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

Моє виправлення

Я змінив назву папки на оригінальну, і вона працює.

Дивно.


0

Тут була та сама проблема, але спрацювало інше рішення.

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

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

  2. Видалити / додати посилання на PresentationFramework та PresentationCore

  3. Перезавантажте систему

Рішенням було скасувати останні кілька змін, які я вніс у свій код. Я щойно додав пару перемикачів та обробників подій для перевірених та неперевірених подій. Після видалення моїх останніх змін все скомпільовано. Потім я додав мої точні зміни назад, і все складено належним чином. Я не розумію, чому це спрацювало - єдине, що я можу придумати, це проблема мого рішення VS. У будь-якому випадку, якщо жодна з інших пропозицій не спрацює, ви можете спробувати повернути свої останні зміни. ПРИМІТКА: якщо ви закриваєте та повторно відкриваєте Visual Studio, ваша історія скасування втрачається .. тому ви можете спробувати це перед тим, як закрити VS.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.