Messaggio di errore: Imansible trovare o aprire il file PDB

Ho provato a eseguire programmi di esempio forniti dal sito ufficiale di NVIDIA . La maggior parte dei programmi ha funzionato senza intoppi tranne alcuni dove ricevo messaggi di errore simili. Come posso ripararlo? Ecco un esempio di messaggio di errore che ho ricevuto dopo aver eseguito un programma chiamato “MatrixMul”.

Nota: ho installato sia NVIDIA CUDA Toolkit v5.0 x32 che x64 sul mio sistema operativo Windows7x64.

'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) 

Il file PDB è un file specifico di Visual Studio con i simboli di debug per il progetto. È ansible ignorare questi messaggi, a meno che non si speri di inserire il codice per quelle DLL con il debugger (che è dubbio, poiché si tratta di dll di sistema). In altre parole, puoi e dovresti ignorarli, dato che non avrai i file PDB per nessuna di queste dll (per impostazione predefinita, almeno, è ansible ottenerle quando esegui il debug tramite Microsoft Symbol Server ). Tutto ciò significa che quando imposti un breakpoint e passi attraverso il codice, non sarai in grado di entrare in nessuna di queste dll (che non vorresti comunque fare).

Solo per completezza, ecco la descrizione PDB ufficiale di MSDN:

Un file di database di programma (PDB) contiene informazioni di debug e di stato del progetto che consentono il collegamento incrementale di una configurazione di Debug del programma. Un file PDB viene creato quando si compila un programma C / C ++ con / ZI o / Zi

Inoltre, per riferimenti futuri, se si desidera avere i file PDB per il proprio codice, sarebbe necessario creare il progetto con le opzioni / ZI o / Zi abilitate (è ansible impostarle tramite le proprietà del progetto -> C / C ++ – -> Generale, quindi impostare il campo per “Formato informazioni di debug”). Non rilevante per la tua situazione, ma ho pensato che potrebbe essere utile in futuro

Lavorare con VS 2013. Provare i seguenti strumenti -> Opzioni -> Debug -> Finestra di output -> Messaggi di caricamento del modulo -> Distriggersto Disabilita la visualizzazione dei moduli caricati.

Se questo messaggio ti dà fastidio, è necessario eseguire Visual Studio con diritti amministrativi per applicare questa direzione su Visual Studio.

Strumenti-> Opzioni-> Debug-> Simboli e selezionare check in una casella “Microsoft Symbol Server”, selezionare carica tutti i moduli, quindi fare clic su Carica tutti i simboli.

Tutto il resto Visual Studio lo farà per te, e avrai questo messaggio sotto Debug nella finestra Output “Nativo” è uscito con il codice 0 (0x0) ”

  1. Si prega di verificare se l’impostazione Genera informazioni di debug è Sì quale sotto Proprietà propties> Proprietà di configurazione> Linker> scheda Debug. In caso contrario, provare a cambiarlo su Sì.

  2. Quei pdb perticular (per ntdll.dll, mscoree.dll, kernel32.dll, ecc.) Sono per l’API di Windows e non dovrebbero essere necessari per le app semplici. Tuttavia, se non riesci a trovare pdb per i tuoi progetti compilati, ti suggerisco di assicurarti che Proprietà progetto> Proprietà di configurazione> Debug> Directory di lavoro utilizzi il valore da Proprietà progetto> Proprietà di configurazione> Generale> Directory di output.

  3. È necessario eseguire Visual c ++ in modalità “Esegui come amministratore”. Fare clic destro sull’eseguibile e fare clic su “Esegui come amministratore”

Sono anche un neofita di CUDA / Visual studio e ho riscontrato lo stesso problema con un paio di esempi. Se esegui DEBUG-> Avvia debug, quindi passa ripetutamente su (F10) vedrai apparire la finestra di output e popolarti. L’esecuzione normale restituisce lo stato di completamento nomale 0x0 (come osservato) e la finestra di output è chiusa.

Se ciò accade in Visual Studio, pulisci il tuo progetto ed eseguilo di nuovo.

Build -> Clean Solution

Esegui (o F5)