Pergunta

Durante uma longa compilação com Visual Studio 2005 (versão 8.0.50727.762), às vezes eu recebo o seguinte erro em vários arquivos em algum projeto:

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

(O arquivo mencionado é ou vc80.pdb ou vc80.idb no dir temp do projeto.)

A próxima compilação do mesmo projeto bem-sucedido. Não há nenhum outro Visual Studio abrir que possam acessar os mesmos arquivos.

Este é um problema sério porque faz a compilação noturno impossível.

Foi útil?

Solução

É possível que um antivírus ou um programa similar está tocando o arquivo PDB na gravação - um antivírus é o mais provável suspeito neste cenário. Eu tenho medo que eu só posso lhe dar algumas indicações gerais, com base na minha experiência anterior na criação nightly builds em nossa loja. Alguns destes pode parecer trivial, mas eu estou incluindo-los em prol da conclusão.

  • Em primeiro lugar e acima de tudo: certifique-se de começar com uma ardósia limpa. Ou seja, força-excluir o diretório da compilação de saída antes de iniciar sua noite.
  • Se você tem um antivírus, antispyware ou outros programas em sua máquina todas as noites, considerar removê-los. Se isso não é uma opção, adicione sua pasta obj à lista de exclusão do programa.
  • (opcional) Considere o uso de ferramentas como VCBuild ou MSBuild como parte de sua noite. Eu acho que é melhor usar MSBuild se você estiver em uma máquina multicore. Usamos IncrediBuild para nightlies e MSBuild para lançamentos, e nunca encontrou o problema que você descreve.

Se nada funcionar, você pode programar um script watchdog algumas horas após a compilação começa e verificar o seu estado; Se a construção falhar, o cão de guarda deve reiniciá-lo. Este é um corte feio, mas é melhor que nada.

Outras dicas

Temos visto muito isso no meu site também. Esta explicação , de Peter Kaufmann, parece ser a mais plausível com base em nossa configuração:

Ao construir uma solução no Visual Studio 2005, você obter erros como fatal C1033 de erro: não é possível abrir banco de dados programa 'xxx \ debug \ vc80.pdb'. No entanto, ao executar a construção de uma segunda vez, ele geralmente consegue.

Motivo: É possível que dois projetos na solução está escrevendo suas saídas para o mesmo diretório (por exemplo, 'xxx \ debug'). Se o número máximo de projeto paralelo cria definição em Ferramentas - Opções, projetos e soluções - Bild e Executar está definido para um valor maior do que 1, significa que dois tópicos compilador poderia estar tentando acessar os mesmos arquivos simultaneamente, resultando em um arquivo compartilhar conflito. Solução: Verifique as configurações do seu projeto e certifique-se há dois projetos estão usando o mesmo diretório para a saída, destino ou qualquer tipo de arquivos intermediários. Ou definir o número máximo de projeto paralelo cria definindo a 1 para uma solução rápida. Eu experimentei este problema muito ao usar os arquivos do projeto VS que vieram com a biblioteca CLAPACK. UPDATE: Há uma chance de que Tortoise SVN acessa 'vc80.pdb', mesmo se o arquivo não está sob controle de versão, que também poderia resultar no erro descrito acima (graças a Liana por comunicar este). No entanto, não posso confirmar isso, como eu não poderia reproduzir o problema depois de ter certeza diferentes diretórios de saída são utilizados para todos os projetos.

Mudar a informação de depuração para o formato C7 em vez de usar o APO.

Project Options -> C/C++ -> General -> Debug Information Format e configurá-lo para C7.

Isso geralmente acontece quando as tentativas anteriores de depuração não mataram o depurador totalmente. No gerente de olhar tarefa para um processo chamado vcjit, matá-lo e tente novamente. Pior opção reiniciar visual studio, isso deve resolver o seu problema.

Eu tive esse problema hoje e acabou por ser caracteres não-ANSI no caminho para o pdb que o causou.

Eu estou usando o windows através vmware, e meu projeto estava em um local compartilhado: \ vmware-host \ Shared Folders \ projeto

Quando me mudei para \ Users \ Julian \ projetá-la resolveu o problema.

Tente clique direito no arquivo executável do VS .... e Propriedades-> Compatibility-> Tick "Executar este programa em modo de compatibilidade:" OFF ........

Eu tive um problema semelhante, enquanto trabalhava em um projeto que eu tinha localizado na minha pasta Dropbox. Eu achei que ele iria jogar este erro quando o pequeno "sincronizar" ícone ia no ícone Dropbox na bandeja do sistema, uma vez que Dropbox estava acessando os arquivos para enviá-los para o seu servidor. Quando eu esperei para construir até Dropbox sincronização acabado, ele trabalhou o tempo todo.

Eu apenas corri para este problema. visual studio estava reclamando sobre não ser capaz de vc100.pdb aberto. Olhei para arquivos abertos para este arquivo usando procexp e descobri que o mspdbsrv processo teve um identificador de arquivo aberto para isso. Matar esse processo corrigiu o problema e eu era capaz de compilar.

Você está usando LinqToSql em tudo? Talvez seja semelhante ao erro estranho I vai experimentar ocasionalmente, como eu pedi nesta questão: O que faz com que Visual Studio para falhar ao carregar uma montagem incorrecta?

Eu mudei meu diretório intermediário de:

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

para

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

Ele funciona agora. Idéia do porquê.

Eu tenho mesmo problema C1033: cannot open program database,

Cenário

Eu tenho dois CHILD.DLL .Eu apenas projeto CHILD.DLL de dll parent.dll e anexo com depurador visual studio, ao mesmo tempo eu estou tentando construir a projeto parent.dll, produz erro C1033: cannot open program database

Solução

Parar a depuração e matar o processo anexado com o debugger.Rebuild o projeto

Esta me acontece de forma consistente se eu Ctrl + Break para cancelar uma compilação (vs2015). Há algum processo que não é desligado corretamente. I foi em uma agitação ms "End Multitarefas" / vs processos relacionados (olhar para duplicatas) e meu construir trabalhou novamente. Um reinício provavelmente funcionaria também. Como seria de se mudar para binutils GNU.

Irritantemente Unlocker ferramentas não relatar quaisquer processos bloqueando o arquivo, o Windows não me deixa apagar o .pdb mas posso mudar o nome. Meu palpite é de dois processos saltar ao mesmo tempo durante uma compilação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top