Lors d'une longue compilation avec Visual Studio 2005 (version 8.0.50727.762), j'obtiens parfois l'erreur suivante dans plusieurs fichiers d'un projet:
fatal error C1033: cannot open program database 'v:\temp\apprtctest\win32\release\vc80.pdb'
(Le fichier mentionné est soit vc80.pdb
ou vc80.idb
dans le répertoire temporaire du projet.)
La prochaine génération du même projet réussit. Aucun autre Visual Studio ouvert ne peut accéder aux mêmes fichiers.
C'est un problème grave car cela rend la compilation nocturne impossible.
Il est possible qu'un antivirus ou un programme similaire touche le fichier pdb en écriture - un antivirus est le suspect le plus probable dans ce scénario. Je crains de ne pouvoir vous donner que des indications générales, basées sur mon expérience passée dans la création de versions nocturnes dans notre boutique. Certains d'entre eux peuvent sembler insignifiants, mais je les inclue dans un souci d'achèvement.
Si rien d'autre ne fonctionne, vous pouvez planifier un script de surveillance quelques heures après le début de la génération et vérifier son état; si la construction échoue, le chien de garde doit le redémarrer. C'est un vilain hack, mais c'est mieux que rien.
Nous l'avons également vu beaucoup sur mon site. Cette explication , de Peter Kaufmann, semble être la plus plausible en fonction de notre configuration:
Lors de la création d'une solution dans Visual Studio 2005, vous obtenez des erreurs telles que l'erreur fatale C1033: impossible d'ouvrir la base de données de programme 'xxx\debug\vc80.pdb'. Cependant, lors de la deuxième exécution de la génération, elle réussit généralement.
Raison: il est possible que deux projets de la solution écrivent leurs sorties dans le même répertoire (par exemple, 'xxx\debug'). Si le nombre maximal de constructions de projets parallèles défini dans Outils - Options, projets et solutions - Bild et Exécuter est défini sur une valeur supérieure à 1, cela signifie que deux threads du compilateur peuvent essayer d'accéder simultanément aux mêmes fichiers, ce qui entraîne la création d'un fichier partage des conflits. Solution: vérifiez les paramètres de votre projet et assurez-vous qu'aucun projet n'utilise le même répertoire pour la sortie, la cible ou tout autre type de fichiers intermédiaires. Ou définissez le nombre maximal de versions de projets parallèles sur 1 pour une solution rapide. J'ai rencontré ce problème lors de l'utilisation des fichiers de projet VS fournis avec la bibliothèque CLAPACK. MISE À JOUR: Il est possible que Tortoise SVN accède à 'vc80.pdb', même si le fichier n'est pas sous contrôle de version, ce qui pourrait également entraîner l'erreur décrite ci-dessus (merci à Liana de l'avoir signalé). Cependant, je ne peux pas le confirmer, car je n'ai pas pu reproduire le problème après m'être assuré que différents répertoires de sortie sont utilisés pour tous les projets.
Basculez les informations de débogage au format C7 au lieu d'utiliser la PDB.
Project Options -> C/C++ -> General -> Debug Information Format
et définissez-le sur C7
.
Cela se produit généralement lorsque vos précédentes tentatives de débogage n'ont pas complètement tué le débogueur. Dans le Gestionnaire des tâches, recherchez un processus appelé vcjit, supprimez-le et réessayez. La pire option est de redémarrer Visual Studio, cela devrait résoudre votre problème.
J'ai eu ce problème aujourd'hui et il s'est avéré qu'il s'agissait de caractères non ansi dans le chemin vers le pdb qui l'a causé.
J'utilise Windows via vmware et mon projet était dans un emplacement partagé:\vmware-Host\Shared Folders\project
Lorsque je l'ai déplacé vers\Users\julian\project, cela a résolu le problème.
J'ai eu un problème similaire en travaillant sur un projet que j'avais localisé dans mon dossier Dropbox. J'ai trouvé que cela déclencherait cette erreur lorsque la petite icône de "synchronisation" se trouvait sur l'icône Dropbox dans la barre d'état système, puisque Dropbox accédait aux fichiers pour les télécharger sur leur serveur. Lorsque j'ai attendu de construire jusqu'à la fin de la synchronisation de Dropbox, cela a fonctionné à chaque fois.
Je viens de rencontrer ce problème. Visual studio se plaignait de ne pas pouvoir ouvrir vc100.pdb
. J'ai cherché des descripteurs de fichiers ouverts dans ce fichier en utilisant procexp
et j'ai découvert que le processus mspdbsrv
avait un descripteur de fichier ouvert. Tuer ce processus a résolu le problème et j'ai pu compiler.
Essayez avec le bouton droit sur le fichier exécutable de VS .... et Propriétés-> Compatibilité-> Cochez "Exécuter ce programme en mode de compatibilité pour:" OFF ........
Cela m'arrive régulièrement si je Ctrl+Break pour annuler une build (vs2015). Il y a un processus qui n'est pas arrêté correctement. Je suis allé sur un processus déchaîné de "fin de tâche" ms/vs (recherchez les doublons) et ma version a de nouveau fonctionné. Un redémarrage fonctionnerait probablement aussi. Tout comme le passage aux gnu binutils.
Les outils de déverrouillage ennuyeux ne signalent aucun processus de verrouillage du fichier, Windows ne me permet pas de supprimer le .pdb
mais je peux le renommer. Je suppose que deux processus interviennent en même temps lors d'une génération.
J'ai changé mon répertoire intermédiaire de:
%TEMP%\$(ProjectName)\$(Platform)\$(Configuration)\
à
C:\temp\$(ProjectName)\$(Platform)\$(Configuration)\
Ça fonctionne maintenant. AUCUNE idée pourquoi.
Utilisez-vous du tout LinqToSql? C'est peut-être similaire à l'erreur étrange que je rencontrerai occasionnellement comme je l'ai demandé dans cette question: Qu'est-ce qui empêche Visual Studio de charger incorrectement un assembly?
J'ai le même problème C1033: cannot open program database
,
Scénario
J'ai deux DLL parent.dll et child.dll. Je viens de joindre le projet child.dll avec le débogueur Visual Studio en même temps j'essaye de construire le parent.dll projet, produit une erreur C1033: cannot open program database
Solution
Arrêtez le débogage et supprimez le processus associé au débogueur. Reconstruisez le projet