Сообщение об ошибке: не удается найти или открыть файл 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) 

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

Для полноты, вот официальное описание PDB из MSDN:

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

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

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

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

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

Все остальное Visual Studio сделает это за вас, и вы получите это сообщение в окне «Отладка» в окне «Выход» с кодом 0 (0x0) »

  1. Проверьте, установлен ли параметр «Генерировать информацию об отладке», который находится в разделе «Проект« Проперии »>« Свойства конфигурации »>« Компонент »>« Отладка ». Если нет, попробуйте изменить его на Да.

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

  3. Вам нужно запустить Visual c ++ в режиме «Запуск от имени администратора». Нажмите на исполняемый файл и нажмите «Запуск от имени администратора».

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

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

Build -> Clean Solution

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

Давайте будем гением компьютера.