2013-06-11 23 views
13

Quando si crea una libreria statica (.LIB) in MS Visual Studio 10 con informazioni di debug, il .PDB viene sempre denominato vc100.pdb.
(in contrapposizione alla costruzione di una .DLL, in cui le informazioni di debug è [MyProjectName].pdb)File PDB con librerie in Visual Studio 10

Questo è un problema per me, perché sto cercando di copiare diverse librerie diverse (ed i loro simboli di debug) in una directory di "PublishedLibraries", ma tutti i nomi vc100.pdb si scontrano ovviamente.

Sono sicuro che posso cambiare i nomi di ogni .PDB per abbinare la sua .LIB, ma per me la domanda più importante è il motivo per cui fa Visual Studio pensa vc100.pdb è un nome migliore di projectA.pdb ??
Come intendiamo lavorare con Debug Info da più librerie se tutti i nomi sono in conflitto?

+1

err, come si esegue il debug di una .lib direttamente? IMO se lo costruisci in una DLL o exe il .pdb per quello avrà tutto il necessario per il debug. –

+1

Se creo diverse librerie (e qualche altro codice) in un eseguibile, non è possibile che quell'eseguibile abbia bisogno di informazioni dai vari file 'vc100.pdb'? Come li legge tutti se hanno tutti lo stesso nome in conflitto? – abelenky

+1

È il "database del programma", contiene informazioni sulle dipendenze. Lascialo dove è stato generato. Il PDB necessario non viene generato finché non si collega la libreria statica a un eseguibile. –

risposta

19

Se si utilizza/Z7 (anziché/ZI o/Zi) [nell'interfaccia utente C/C++ -> Generale -> Formato informazioni debug], le informazioni di debug sono incorporate nel file lib stesso, anziché in un file separato pdb, il che significa che non devi preoccuparti dello stesso nome.

Quando si genera il file eseguibile finale (.exe o .dll), si otterrà un pdb unito da tutto il piccolo pdbs incorporato.

vedere this question per ulteriori informazioni

Suo il modo in cui ho sempre riuscito questo problema nella mia squadra, in quanto non si può perdere le informazioni di debug durante il processo di compilazione. Abbassa le librerie in qualche modo [ma non più in totale di avere sia lib e pdb], ma poichè probabilmente non spedisci libs non dovresti preoccuparti di questo.