33

Au cours d'une longue compilation avec Visual Studio 2005 (version 8.0.50727.762), je reçois parfois l'erreur suivante dans plusieurs fichiers dans certains projets:compilation échoue au hasard: "ne peut pas la base de données open programme"

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

(Le le fichier mentionné est vc80.pdb ou vc80.idb dans le répertoire temp du projet.)

La prochaine version du même projet réussit. Aucun autre fichier Visual Studio ouvert ne peut accéder aux mêmes fichiers.

Ceci est un problème sérieux car il rend la compilation nocturne impossible.

+1

Pourriez-vous aussi avoir votre projet dans Dropbox \ Google Drive ou un produit similaire. –

Répondre

20

Il est possible qu'un antivirus ou un programme similaire touche le fichier pdb à l'é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 mise en place de constructions nocturnes dans notre magasin. Certains d'entre eux peuvent sembler insignifiants, mais je les inclus dans un souci d'achèvement. Tout d'abord: assurez-vous de commencer avec une ardoise propre. C'est-à-force, effacez le répertoire de sortie de la construction avant de commencer votre soirée.

  • Si vous avez un antivirus, antispyware ou d'autres programmes similaires sur votre machine tous les soirs, envisagez de les supprimer. Si ce n'est pas une option, ajoutez votre dossier obj à la liste d'exclusion du programme.
  • (facultatif) Envisagez d'utiliser des outils tels que VCBuild ou MSBuild dans le cadre de votre soirée. Je pense qu'il est préférable d'utiliser MSBuild si vous utilisez 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 d'autre ne fonctionne, vous pouvez programmer un script watchdog quelques heures après le démarrage 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 hack moche, mais c'est mieux que rien.

  • +0

    Je suppose que c'est le problème. – Lev

    +0

    Généralement, les scanners sur accès antivirus fonctionnent en installant un filtre de système de fichiers. Les programmes en mode utilisateur ne devraient pas voir de différence. Plus susceptible d'être un indexeur de recherche ou similaire. –

    +0

    Désactiver l'antivirus aidé! – Lev

    21

    Nous l'avons vu aussi beaucoup sur mon site. This explanation, de Peter Kaufmann, semble être la plus plausible en fonction de notre configuration:

    Lors de la construction d'une solution dans Visual Studio 2005, vous obtenez des erreurs comme C1033 d'erreur fatale: ne peut pas ouvrir la base de données du programme « xxx \ debug \ vc80. pdb '. Cependant, lorsque vous exécutez la génération pour la deuxième fois, elle réussit généralement.

    Motif: 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 générations de projets parallèles définies dans Outils - Options, Projets et Solutions - Bild et Exécuter est supérieur à 1, cela signifie que deux threads du compilateur peuvent essayer d'accéder simultanément aux mêmes fichiers, ce qui entraîne un fichier partage de conflit. 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 fichier intermédiaire. Ou définissez le nombre maximal de générations de projets parallèles sur 1 pour une solution de contournement rapide. J'ai rencontré ce même 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 peut aussi entraîner l'erreur décrite ci-dessus (merci à Liana de le signaler). Cependant, je ne peux pas le confirmer, car je ne pouvais pas reproduire le problème après m'être assuré que les différents répertoires de sortie sont utilisés pour tous les projets.

    +0

    Merci, mais aucun des deux n'est mon cas (sauf si TSVN fait quelque chose en arrière-plan lorsqu'aucune mise à jour n'est effectuée). – Lev

    +2

    Je voulais juste dire que j'ai déjà vu cette erreur et que le fait de définir le nombre de builds parallèles à 1 l'a corrigé pour moi ... mais clairement, l'OP a connu quelque chose de différent. –

    +0

    Merci. Je recevais la même erreur sur chaque compilation depuis hier et je devais nettoyer la compilation à chaque fois pour la compiler correctement. Désinstaller Tortoise SVN semble avoir résolu le problème pour le moment dans mon cas. – localhost

    6

    Cela se produit généralement lorsque vos précédentes tentatives de débogage n'ont pas complètement détruit le débogueur. Dans le Gestionnaire des tâches, recherchez un processus appelé vcjit, supprimez-le et réessayez. Pire option redémarrer Visual Studio, cela devrait résoudre votre problème.

    1

    J'ai eu ce problème aujourd'hui et il s'est avéré être des caractères non-ansi dans le chemin au pdb qui l'a provoqué.

    J'utilise des fenêtres à travers vmware, et mon projet était dans un endroit commun: \ vmware-host \ Dossiers partagés \ projet

    Quand je suis arrivé à \ Users \ julian \ projet, il a résolu le problème.

    1

    Essayez de cliquer droit sur le fichier excutable de VS .... et Propriétés-> Compatibility-> Cochez la case "Exécuter ce programme en mode compatibilité pour:" OFF ........

    7

    le commutateur debug info au format C7 au lieu d'utiliser la PDB.

    Project Options -> C/C++ -> General -> Debug Information Format et de le définir à C7.

    +0

    Cela a fonctionné, après des jours de frustration.Bien vous.Une solution de contournement au lieu d'essayer de comprendre * pourquoi * mspdbsrv.exe plantait –

    0

    j'ai changé mon répertoire intermédiaire de:

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

    à

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

    Il fonctionne maintenant. Aucune idée pourquoi.

    1

    J'ai eu un problème similaire lorsque je travaillais sur un projet que j'avais trouvé dans mon dossier Dropbox. J'ai trouvé que cette erreur se produisait 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. Quand j'ai attendu pour construire jusqu'à ce que Dropbox ait fini la synchronisation, cela fonctionnait à chaque fois.

    +0

    Cela a du sens - cela vaut aussi pour moi et la pause de la synchronisation au cours de la construire le fixe. –

    1

    Je viens de rencontrer ce problème. Visual studio se plaignait de ne pas pouvoir ouvrir vc100.pdb. J'ai cherché des poignées de fichier ouvertes dans ce fichier en utilisant procexp et j'ai découvert que le processus mspdbsrv avait un handle de fichier ouvert. Tuer ce processus a réglé le problème et j'ai pu compiler.

    0

    J'ai même problème C1033: cannot open program database,

    Scénario

    J'ai deux de dll parent.dll et CHILD.DLL .Je projet de CHILD.DLL juste attaché avec débogueur studio visuel au en même temps j'essaye de construire le projet parent.dll, produit l'erreur C1033: cannot open program database

    Solution

    Arrêtez le débogage et supprimez le processus associé au débogueur.Reconstruire le projet

    0

    Cela me arrive toujours si je Ctrl +Pause pour annuler une construction (vs2015). Il y a un processus qui n'est pas fermé correctement. Je suis allé sur 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 passer à binutils gnu.

    Les outils de déblocage ennuyeux ne signalent aucun processus de verrouillage du fichier, Windows ne me laisse pas supprimer le .pdb mais je peux le renommer. Ma conjecture est que deux processus sautent en même temps pendant une construction.

    Questions connexes