La compilation échoue de manière aléatoire: & # 8220; impossible d'ouvrir la base de données de programmes & # 8221;

StackOverflow https://stackoverflow.com/questions/126751

Question

Lors d'une longue compilation avec Visual Studio 2005 (version 8.0.50727.762), le message d'erreur suivant s'affiche parfois dans plusieurs fichiers d'un projet:

fatal error C1033: cannot open program database 'v:\temp\apprtctest\win32\release\vc80.pdb'

(Le fichier mentionné est 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 logiciel ouvert dans Visual Studio pouvant accéder aux mêmes fichiers.

Il s’agit d’un problème grave, car il rend impossible la compilation nocturne.

Était-ce utile?

La solution

Il est possible qu'un antivirus ou un programme similaire utilise 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 quelques indications générales, basées sur mon expérience passée dans la mise en place de constructions nocturnes dans notre magasin. Certaines d’entre elles peuvent sembler anodines, mais je les inclue pour les compléter.

  • Tout d’abord: assurez-vous de commencer avec une table rase. En d’autres termes, forcez-supprimez le répertoire de sortie de la construction avant de commencer la nuit.
  • Si vous avez un antivirus, un antispyware ou un autre programme du même genre sur votre ordinateur de nuit, envisagez de le supprimer. Si ce n'est pas une option, ajoutez votre dossier obj à la liste d'exclusion du programme.
  • (facultatif) Pensez à utiliser des outils tels que VCBuild ou MSBuild dans le cadre de vos activités nocturnes. Je pense qu'il est préférable d'utiliser MSBuild si vous êtes sur une machine multicœur. Nous utilisons IncrediBuild pour les nightlies et MSBuild pour les versions, et n’avons jamais rencontré le problème que vous décrivez.

Si rien ne fonctionne, vous pouvez planifier un script de surveillance quelques heures après le début de la construction et en vérifier le statut; si la construction échoue, le chien de garde devrait la redémarrer. C'est un bidule laid, mais c'est mieux que rien.

Autres conseils

Nous avons souvent vu cela sur mon site. Cette explication de Peter Kaufmann semble être la plus plausible selon notre configuration:

Lors de la création d'une solution dans Visual Studio 2005, des erreurs telles que l'erreur fatale C1033: impossible d'ouvrir la base de données de programme 'xxx \ debug \ vc80.pdb'. Cependant, lorsque vous exécutez le build pour la deuxième fois, il 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 tenter d'accéder simultanément aux mêmes fichiers, ce qui entraîne la création d'un fichier. conflit de partage. Solution: vérifiez les paramètres de votre projet et assurez-vous qu'aucun projet n'utilise le même répertoire pour les fichiers de sortie, cibles ou autres types de fichiers intermédiaires. Vous pouvez également définir le nombre maximal de générations de projets parallèles sur 1 pour une solution de contournement rapide. J'ai rencontré ce problème lors de l'utilisation des fichiers de projet VS fournis avec la bibliothèque CLAPACK. UPDATE: Tortoise SVN peut accéder à '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 ne pouvais pas reproduire le problème après m'être assuré que différents répertoires de sortie étaient utilisés pour tous les projets.

Basculez les informations de débogage au format C7 au lieu d'utiliser le PDB.

Options de projet - > C / C ++ - > Général - > Format des informations de débogage et définissez-le sur C7 .

Cela se produit généralement lorsque vos tentatives précédentes de débogage n’ont pas complètement tué le débogueur. Dans le Gestionnaire des tâches, recherchez un processus appelé vcjit, arrêtez-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 d'accès à la pdb qui l'a causé.

J'utilise Windows via vmware et mon projet se trouvait dans un emplacement partagé: \ vmware-host \ Shared Folders \ project

Lorsque je l'ai déplacé vers \ Users \ julian \ project, le problème a été résolu.

Essayez un clic droit sur le fichier exécutable de VS .... et Propriétés- > Compatibilité- > Cochez " Exécuter ce programme en mode de compatibilité ford: " OFF ........

J'ai eu un problème similaire alors que je travaillais sur un projet situé dans mon dossier Dropbox. J'ai constaté que cette erreur serait renvoyée lorsque le petit "Synchronisation" L'icône apparaissait sur l'icône Dropbox dans la barre d'état système, car Dropbox accédait aux fichiers pour les télécharger sur leur serveur. Lorsque j’ai attendu la création de mon compte jusqu’à ce que la synchronisation soit terminée, cela a fonctionné à chaque fois.

Je viens de rencontrer ce problème. Visual studio s'est plaint de l'impossibilité d'ouvrir vc100.pdb . J'ai cherché les descripteurs de fichier ouverts dans ce fichier à l'aide de procexp et j'ai découvert que le processus mspdbsrv comportait un descripteur de fichier ouvert. Tuer ce processus a résolu le problème et j'ai pu compiler.

Utilisez-vous LinqToSql du tout? C’est peut-être semblable à l’erreur bizarre que je vais rencontrer occasionnellement lorsque j’ai posé cette question: Pourquoi Visual Studio ne parvient-il pas à charger un assembly de manière incorrecte?

J'ai changé mon répertoire intermédiaire à partir de:

%TEMP%\$(ProjectName)\$(Platform)\$(Configuration)\

à

C:\temp\$(ProjectName)\$(Platform)\$(Configuration)\

Cela fonctionne maintenant. Aucune idée pourquoi.

J'ai le même problème C1033: impossible d'ouvrir la base de données du programme ,

Scénario

J'ai parent.dll et child.dll dans deux dll. Je viens d'attacher un projet child.dll avec le débogueur de Visual Studio en même temps projet parent.dll, produit l'erreur C1033: impossible d'ouvrir la base de données du programme

Solution

Arrêtez le débogage et arrêtez le processus attaché avec le débogueur. Recréez le projet

Cela m’arrive systématiquement si Ctrl + Interrompre pour annuler une construction (vs2015). Il y a des processus qui ne sont pas arrêtés correctement. J'ai fait un saccage "End Tasking". ms / vs processus connexes (chercher des doublons) et ma construction a fonctionné à nouveau. Un redémarrage fonctionnerait probablement aussi. Comme le ferait Gnu Binutils.

Les outils de déverrouillage ne signalent nullement les 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 de la construction.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top