Сообщение об ошибке: не удается найти или открыть файл PDB

Я попробовал запустить примеры программ на официальном сайте NVIDIA. Большинство программ выполнялись гладко, кроме немногих, где я получаю похожие сообщения об ошибках. Как я могу это исправить? Вот пример сообщения об ошибке, который я получил после запуска программы под названием "MatrixMul".

Примечание. Я установил как x32, так и x64 NVIDIA CUDA Toolkit v5.0 на мою ОС Window7x64.

'matrixMul.exe': Loaded 'C:\ProgramData\NVIDIA Corporation\CUDA Samples\v5.0\bin\win32\Debug\matrixMul.exe', Symbols loaded.
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Program Files (x86)\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\cudart32_50_35.dll', Binary was not built with debug information.
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\apphelp.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\AppPatch\AcLayers.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\shell32.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\shlwapi.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\userenv.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\profapi.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\winspool.drv', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\mpr.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\nvinit.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\nvcuda.dll', Binary was not built with debug information.
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\setupapi.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\devobj.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll', Cannot find or open the PDB file
'matrixMul.exe': Unloaded 'C:\Windows\SysWOW64\dwmapi.dll'
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\nvapi.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\version.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\wintrust.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\crypt32.dll', Cannot find or open the PDB file
'matrixMul.exe': Loaded 'C:\Windows\SysWOW64\msasn1.dll', Cannot find or open the PDB file
The thread 'Win32 Thread' (0x12fc) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x18a0) has exited with code 0 (0x0).
The program '[3104] matrixMul.exe: Native' has exited with code 0 (0x0)

Ответ 1

Файл PDB - это отдельный файл Visual Studio, который содержит отладочные символы для вашего проекта. Вы можете игнорировать эти сообщения, если только вы не хотите входить в код для этих DLL с помощью отладчика (что сомнительно, так как это системные DLL). Другими словами, вы можете и должны игнорировать их, так как у вас не будет файлов PDB для любой из этих библиотек (по крайней мере по умолчанию, оказывается, вы действительно можете получить их при отладке через Microsoft Symbol Server). Все это означает, что когда вы устанавливаете точку останова и выполняете код, вы не сможете войти в какую-либо из этих библиотек (которые вы не хотели бы делать в любом случае).

Просто для полноты, здесь официальное описание PDB из MSDN:

Файл базы данных программ (PDB) содержит отладочную информацию и информацию о состоянии проекта, которая позволяет инкрементно связывать конфигурацию Debug вашей программы. Файл PDB создается при компиляции программы C/С++ с помощью /ZI или/Zi

Также для дальнейшего использования, если вы хотите иметь файлы PDB для своего собственного кода, вам нужно было бы создать свой проект с включенными опциями /ZI или/Zi (вы можете установить их через свойства проекта → C/С++ → Общие, затем установите поле "Формат отладочной информации" ). Не относится к вашей ситуации, но я полагал, что это может быть полезно в будущем.

Ответ 2

Работа с VS 2013. Попробуйте следующие Инструменты → Параметры → Отладка → Окно вывода → Сообщения загрузки модуля → Выкл. Он отключит отображение загруженных модулей.

Ответ 3

Если это сообщение вас беспокоит, вам нужно запустить Visual Studio с правами администратора, чтобы применить это направление в Visual Studio.

Инструменты- > Параметры- > Отладка- > Символы и выберите флажок "Серверы Microsoft Symbol Servers", отметьте все модули и нажмите "Загрузить все символы".

Все остальное Visual Studio сделает это за вас, и вы получите это сообщение в окне Debug in Output "Native" вышел с кодом 0 (0x0) "

Ответ 4

  • Пожалуйста, проверьте, установлен ли параметр "Генерировать информацию об отладке", который находится в разделе "Project Propeties" > "Свойства конфигурации" > "Ссылка" > вкладка "Отладка". Если нет, попробуйте изменить его на Да.

  • Те perticular pdb (для ntdll.dll, mscoree.dll, kernel32.dll и т.д.) предназначены для API окон и не нужны для простых приложений. Однако, если вы не можете найти pdb для своих собственных скомпилированных проектов, я предлагаю убедиться, что Свойства проектa > Свойства конфигурации > Отладкa > Рабочий каталог использует значение из Свойства проектa > Свойства конфигурации > Общие > Каталог вывода.

  • Вам нужно запустить Visual С++ в режиме "Запуск от имени администратора". Щелкните правой кнопкой мыши исполняемый файл и нажмите "Запуск от имени администратора"

Ответ 5

Я также новичок в CUDA/Visual studio и столкнулся с той же проблемой с несколькими образцами. Если вы запустите DEBUG- > Start Debugging, затем многократно переходите (F10), вы увидите, что окно вывода появляется и заполняется. Нормальное выполнение возвращает статус завершения нумерации 0x0 (как вы заметили), и окно вывода закрыто.

Ответ 6

Если это происходит в visual studio, тогда очистите проект и запустите его снова.

Сборка → Чистое решение

Запуск (или F5)