2013-04-10 32 views
60

Ho provato a eseguire programmi di esempio forniti a NVIDIA's official site. 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".Messaggio di errore: Impossibile trovare o aprire il file PDB

Nota: Ho installato sia x32 che x64 NVIDIA CUDA Toolkit v5.0 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) 
+0

Solo per doppio controllo, tutti i campioni con quei messaggi ancora eseguito correttamente, giusto? In caso contrario, si verificano altri errori e l'impossibilità di caricare i file PDB è un'aringa rossa. – alrikai

+0

No, tutti questi esempi non sono mai stati eseguiti correttamente. Non conosco molto la programmazione CUDA come sono un principiante. – KNU

+0

Quale output da riga di comando hanno fornito i campioni? Nessuno di questi messaggi è un errore fatale, quindi cosa hanno prodotto gli output quando li hai eseguiti? L'ultimo messaggio che l'eseguibile è terminato con il codice 0 sembra corretto. – alrikai

risposta

104

Il file PDB è un file specifico di Visual Studio con i simboli di debug del progetto. È possibile 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, poiché non avrai i file PDB per nessuna di queste dll (per impostazione predefinita, in effetti, è possibile ottenerle durante il debug tramite lo 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 ufficiale PPB da MSDN:

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

anche per riferimento futuro, se si desidera avere file PDB per il proprio codice, si dovrebbe costruire il vostro progetto con le opzioni/ZI o/Zi abilitate (è possibile impostarle tramite le proprietà del progetto -> C/C++ -> Generale, quindi impostare il campo per "Formato informazioni di debug"). Non rilevanti per la vostra situazione, ma ho pensato che potrebbe essere utile in futuro

+1

"non sarai in grado di entrare in nessuna di quelle dll (che non vorresti fare comunque)" Aspetta ... Perché no? Cosa succede se vogliamo capire come funziona qualcosa di meglio? – Andrew

+7

@Andrew Quel commento era più diretto verso le specifiche di questa domanda - la comprensione delle DLL di sistema di Windows è ortogonale all'esecuzione delle applicazioni di esempio CUDA – alrikai

+0

Anche se ho seguito i tuoi passi, c'è ancora un errore, "FaceReg.exe" (Win32): caricato 'C: \ Windows \ System32 \ kernel32.dll'. Simboli caricati. 'FaceReg.exe' (Win32): caricato 'C: \ Windows \ System32 \ KernelBase.dll'. Simboli caricati. 'FaceReg.exe' (Win32): caricato 'C: \ OpenCV \ opencv \ build \ x86 \ vc12 \ bin \ opencv_core2411d.dll'. Impossibile trovare o aprire il file PDB. 'FaceReg.exe' (Win32): caricato 'C: \ Windows \ System32 \ msvcp120d.dll'. Simboli caricati. –

5
  1. Si prega di verificare se l'impostazione Genera informazioni di debug è Sì, che nell'ambito del progetto Propeties> Proprietà di configurazione> Linker> scheda Debug. In caso contrario, provare a cambiarlo su Sì.

  2. Quelle pdb perticulari (per ntdll.dll, mscoree.dll, kernel32.dll, ecc.) Sono per l'API di Windows e non dovrebbero essere necessarie per le app semplici. Tuttavia, se non riesci a trovare pdb per i tuoi progetti compilati, ti suggerisco di verificare 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 "Esegui come amministratore" mode.Right cliccare sul file eseguibile e fare clic su "Esegui come amministratore"

+0

Grazie amico. Il mio problema era con le cartelle di lavoro e di output. – AlexS

3

Sono anche un novizio di CUDA/Visual Studio e incontrato lo stesso problema con un paio di campioni. 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.

+0

Questo è stato il più utile per me perché volevo davvero vedere l'output di questo programma per sapere se il test è stato superato. Si noti che in realtà è necessario impostare un punto di interruzione per l'interruzione dell'esecuzione prima che la finestra venga chiusa. Ho impostato un punto di interruzione sulla prima riga del metodo principale. –

18

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", contrassegnare carica tutti i moduli quindi fare clic su Carica tutti i simboli.

Tutto il resto Visual Studio lo farà per voi, e si avrà questo messaggio sotto debug nella finestra di uscita "Native' è uscito con il codice 0 (0x0)"

+2

Ho fatto come hai detto tu, ma non sono in grado di fare clic sul pulsante Carica tutti i simboli come è disabilitato in questo momento. Mostra l'opzione del browser per i simboli della cache in questa directory. Non so cosa selezionare. Sto usando Visual Studio 2015. –

30

Lavorare con VS 2013. Provare la seguente Strumenti -> Opzioni -> Debug -> Finestra di output -> Messaggi di caricamento del modulo -> Off Disabilita la visualizzazione dei moduli caricati.

+14

Non so perché la gente rispetta le risposte come questa; forse non ha risposto esattamente alla domanda, ma è un'informazione utile. A proposito, puoi anche fare clic con il pulsante destro del mouse nell'area di testo della finestra Output. – Andrew

+0

@ Mike22LFC Risolverà il problema con il caricamento dei simboli. – Mavie

0

Se ciò accade in Visual Studio, pulire il progetto ed eseguirlo di nuovo.

Build -> Pulisci soluzione

Run (o F5)

Problemi correlati