33

Durante una larga compilación con Visual Studio 2005 (versión 8.0.50727.762), a veces me sale el siguiente error en varios archivos en algún proyecto:compilación falla al azar: "no se puede abrir la base de datos del programa"

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

(La el archivo mencionado es vc80.pdb o vc80.idb en el directorio temporal del proyecto)

La siguiente compilación del mismo proyecto se realiza correctamente. No hay otro Visual Studio abierto que pueda acceder a los mismos archivos.

Esto es un problema grave porque hace que la compilación nocturna sea imposible.

+1

También podría ser que tenga su proyecto en Dropbox \ Google Drive o producto similar. –

Respuesta

20

Es posible que un antivirus o un programa similar esté tocando el archivo pdb en escritura: un antivirus es el sospechoso más probable en este escenario. Me temo que solo puedo darte algunos consejos generales, basados ​​en mi experiencia previa en la creación de versiones nocturnas en nuestra tienda. Algunos de estos pueden parecer triviales, pero los incluyo para completarlos.

  • Lo primero y más importante: asegúrese de comenzar con un borrón y cuenta nueva. Es decir, fuerza: elimine el directorio de salida de la construcción antes de comenzar su actividad nocturna.
  • Si tiene un antivirus, antispyware u otros programas similares en su máquina nocturna, considere eliminarlos. Si esa no es una opción, agregue su carpeta obj a la lista de exclusión del programa.
  • (opcional) Considere utilizar herramientas como VCBuild o MSBuild como parte de su actividad nocturna. Creo que es mejor usar MSBuild si estás en una máquina multinúcleo. Usamos IncrediBuild para nightlies y MSBuild para lanzamientos, y nunca encontramos el problema que describes.

Si nada funciona, puede programar un script de vigilancia unas horas después de que se inicie la compilación y verificar su estado; si la construcción falla, el perro guardián debería reiniciarla. Este es un hack feo, pero es mejor que nada.

+0

Supongo que ese es el problema. – Lev

+0

Generalmente, los analizadores de acceso antivirus funcionan mediante la instalación de un filtro de sistema de archivos. Los programas de modo de usuario no deberían ver diferencia. Es más probable que sea un indexador de búsqueda o similar. –

+0

¡Apagar el antivirus ayudó! – Lev

21

Hemos visto esto mucho en mi sitio también. This explanation, de Peter Kaufmann, parece ser la más plausible sobre la base de nuestra configuración:

Cuando la construcción de una solución en Visual Studio 2005, se obtienen errores como C1033 error grave: puede base de datos de programa no abierto 'xxx \ debug \ VC80. pdb '. Sin embargo, al ejecutar la compilación por segunda vez, generalmente tiene éxito.

Motivo: Es posible que dos proyectos de la solución estén escribiendo sus resultados en el mismo directorio (por ejemplo, 'xxx \ debug'). Si el número máximo de configuraciones de proyecto paralelas en Herramientas - Opciones, Proyectos y Soluciones - Bild and Run se establece en un valor mayor que 1, esto significa que dos hilos del compilador podrían estar intentando acceder a los mismos archivos simultáneamente, lo que da como resultado un archivo compartiendo conflicto. Solución: compruebe la configuración de su proyecto y asegúrese de que no haya dos proyectos que utilicen el mismo directorio para salida, destino o cualquier tipo de archivo intermedio. O establezca el número máximo de configuraciones de proyectos paralelos en 1 para una solución rápida. Experimenté este mismo problema al usar los archivos del proyecto VS que venía con la biblioteca CLAPACK. ACTUALIZACIÓN: existe la posibilidad de que Tortoise SVN acceda a 'vc80.pdb', incluso si el archivo no está bajo control de versiones, lo que también podría provocar el error descrito anteriormente (gracias a Liana por informar esto). Sin embargo, no puedo confirmarlo, ya que no pude reproducir el problema después de asegurarme de que se usan directorios de salida diferentes para todos los proyectos.

+0

Gracias, pero ninguno de los dos es mi caso (a menos que TSVN haga algo en segundo plano cuando no se realiza ninguna actualización). – Lev

+2

Solo quería decir que he visto este error antes y establecer el número de compilaciones paralelas en 1 me lo arregló ... aunque claramente, el OP experimentó algo diferente. –

+0

Gracias. Obtuve el mismo error en cada compilación desde ayer y tuve que limpiar la compilación cada vez para que se compilara correctamente. La desinstalación de Tortoise SVN parece haber solucionado el problema por el momento en mi caso. – localhost

6

Esto generalmente ocurre cuando los intentos previos de depuración no han eliminado completamente el depurador. En el Administrador de tareas, busque un proceso llamado vcjit, finalícelo y vuelva a intentarlo. Peor opción reiniciar Visual Studio, esto debería resolver su problema.

1

Tuve este problema hoy y resultó ser caracteres no ansi en el camino al pdb que lo causó.

estoy usando ventanas a través de VMware, y mi proyecto estaba en una ubicación compartida: \ VMware host \ carpetas compartidas \ proyecto

Cuando me mudé a \ Users \ Julian \ proyecto que resuelva el problema.

1

pruebe con botón derecho en el archivo de excutable VS .... y Properties-> Compatibility-> Tick "Ejecutar este programa en modo de Compatibilidad para:" OFF ........

7

interruptor de la depuración información al formato C7 en lugar de usar el PDB.

Project Options -> C/C++ -> General -> Debug Information Format y configúralo en C7.

+0

Eso funcionó, después de días de frustración. Te bendigo. Una solución alternativa en lugar de tratar de averiguar * por qué * mspdbsrv.exe se bloqueaba. –

0

he cambiado de directorio intermedio de:

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

a

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

Funciona ahora. NO tengo idea por qué.

1

Tuve un problema similar al trabajar en un proyecto que había localizado en mi carpeta de Dropbox. Descubrí que arrojaría este error cuando el pequeño ícono de "sincronización" estaba en el ícono de Dropbox en la bandeja del sistema, ya que Dropbox estaba accediendo a los archivos para subirlos a su servidor. Cuando esperé para construir hasta que Dropbox terminó la sincronización, funcionó todo el tiempo.

+0

Esto tiene sentido, esto también se aplica a mí y pausar la sincronización durante el la construcción lo arregló. –

1

Acabo de encontrarme con este problema. Visual Studio se quejaba de no poder abrir vc100.pdb. Busqué archivos abiertos maneja a este archivo usando procexp y descubrí que el proceso mspdbsrv tenía un archivo abierto manejarlo. Matar este proceso solucionó el problema y pude compilarlo.

0

Tengo mismo problema C1033: cannot open program database,

Escenario

tengo dos parent.dll y CHILD.DLL proyecto CHILD.DLL simplemente adjunta .I de DLL con depurador de Visual Studio en el Al mismo tiempo, estoy intentando construir el proyecto parent.dll, produce el error C1033: cannot open program database

Solución

Detenga la depuración y elimine el proceso adjunto con el depurador.Reconstruir el proyecto

0

Esto me pasa constantemente si Ctrl +rotura para cancelar una acumulación (vs2015). Hay algún proceso que no se cierra correctamente. Fui en un alboroto "End Tasking" ms/vs procesos relacionados (busque duplicados) y mi compilación funcionó de nuevo. Un reinicio probablemente también funcionaría. Al igual que mudarse a gnu binutils.

Herramientas de desbloqueo molesto no informan ningún proceso de bloqueo del archivo, windows no me permite eliminar el .pdb pero puedo cambiarle el nombre. Mi suposición es que dos procesos entran al mismo tiempo durante una compilación.

Cuestiones relacionadas