Abbiamo superato i punti elencati su MSDN WRT per questo errore (eccetto per # 5). Tre persone diverse su macchine diverse stanno ottenendo lo stesso problema. Il PDB viene creato, ma fallisce da qualche parte nel mezzo.LNK1201 Visual C++ 2010 Progetto di grandi dimensioni che non riesce a generare PDB
Dettagli:
- 67 librerie statiche
- 4.27 GB di librerie statiche
- 1048575 byte - dimensioni del PPB quando linker non riesce
- L'ultimo paio di megabyte di PPB sono nulli (zero del
- Il build di sblocco ha esito positivo & produce un PDB (lo abbiamo acceso, senza informazioni di debug nell'exe)
- Rilascio build PDB è poco meno di 1 GB.
Abbiamo disattivato i programmi antivirus. Controllato con procmon.exe e non ha rilevato interazioni di sospetto con il PDB quando il linker non è riuscito.
Related question suggerisce il limite di ~ 1 GB sui PDB - Qualcuno/modo per confermarlo?
UPDATE & SOLUZIONE:
@Barry e la squadra di cromo hanno escogitato la soluzione. Here è la patch per il sistema di generazione Chromium che implementa la risoluzione.
dettagli
Il PPB utilizza un filesystem virtuale internamente: MSF. Quando il linker crea il file PDB, il suo valore predefinito è una dimensione della pagina di 2 kB (apparentemente non configurabile). Apparentemente & fortunatamente quando il compilatore crea il suo PDB imposta di default la dimensione della pagina a 4 kB. Questo PDB del compilatore può essere issato e utilizzato come base per il PDB del linker.
migliore soluzione Come pre-Link Event sul progetto che è il collegamento il vostro exe o dll possiamo issare il compilatore a generare la nostra richiesta PPB iniziale:
cl -c "dummy_empty.cpp" /Zi /Fd"$(TargetDir)$(TargetName).pdb"
soluzione originale
Creare un progetto di libreria statica C++ con un file cpp vuoto, configurare il 'Nome file database Porgram' per produrre qualcosa di diverso da quello predefinito. Utilizzare alcuni eventi di sviluppo del progetto (io ho usato "Evento pre-link") per copiare nel PDB creato in precedenza nel luogo in cui il linker si aspetta (vedi Linker-> Genera file di database del programma) per creare il suo PDB. Fortunatamente il linker adotterà il copiato in PDB e utilizzerà la sua dimensione di pagina di 4 kB. Questo comprerà un po 'di tempo, e un po' di spazio che consente fino a un PDB da 2 GB.
I build incrementali erano noti per causare tali problemi. Sta succedendo durante una ricostruzione completa dopo una pulizia? –
Sì, sta succedendo su build & rebuild. Credo che il collegamento incrementale sia disattivato, ma stiamo verificando due volte. – Zac