Сборник не случайно: "не удается открыть базу данных программы "

во время длинной компиляции с Visual Studio 2005 (версия 8.0.50727.762) я иногда получаю следующую ошибку в нескольких файлах в каком-то проекте:

fatal error C1033: cannot open program database 'v:tempapprtctestwin32releasevc80.pdb'

(упомянутый файл либо vc80.pdb или vc80.idb в temp dir проекта.)

следующая сборка того же проекта завершается успешно. Нет другой открытой Visual Studio, которая могла бы получить доступ к тем же файлам.

это серьезная проблема, потому что это делает ночную компиляцию невозможной.

12 ответов


возможно, что антивирус или аналогичная программа касается файла pdb при записи - антивирус является наиболее вероятным подозреваемым в этом сценарии. Боюсь, что я могу дать вам только несколько общих указаний, основываясь на моем прошлом опыте установки ночных сборок в нашем магазине. Некоторые из них могут показаться тривиальными, но я их ради завершения.

  • прежде всего: убедитесь, что вы начинаете с чистого листа. То есть, force-удалить вывод каталог сборки перед началом ночной работы.
  • Если у вас есть антивирус, антишпионские или другие подобные программы на вашем ночном компьютере, рассмотрите возможность их удаления. Если это не вариант, добавьте папку obj в список исключений программы.
  • (необязательно) рассмотрите возможность использования таких инструментов, как VCBuild или MSBuild, как часть вашей ночи. Я думаю, что лучше использовать MSBuild, если вы находитесь на многоядерной машине. Мы использовать IncrediBuild для нормально и MSBuild для релизов, и никогда не сталкивался с проблемой, которую вы описываете.

Если больше ничего не работает, вы можете запланировать сценарий сторожевого пса через несколько часов после начала сборки и проверить его статус; если сборка не работает, сторожевой должен перезапустить его. Это грязный хак, но это лучше, чем ничего.


мы видели это много на моем сайте тоже. данное объяснение, от Петера Кауфмана, кажется, наиболее правдоподобным на основе нашей установки:

при создании решения в Visual Studio 2005 вы получаете ошибки, такие как фатальная ошибка C1033: не удается открыть базу данных программы " xxx\debug\vc80.pdb'. Однако при запуске сборки во второй раз она обычно выполняется успешно.

причина: возможно, что два проекта в решении записывают свои результаты в тот же каталог (например, "xxx\debug"). Если максимальное число параллельных сборок проекта в инструментах-параметры, проекты и решения - Bild и Run имеет значение больше 1, это означает, что два потока компилятора могут пытаться получить доступ к одним и тем же файлам одновременно, что приводит к конфликту обмена файлами. Решение: проверьте параметры вашего проекта и убедитесь, что нет двух проектов, используя один и тот же каталог для вывода, цель или какой-либо промежуточных файлов. Или установить максимальное число параллельного проекта строит установку в 1 для быстрого обхода. Я испытал эту проблему при использовании файлов проекта VS, которые поставляются с библиотекой CLAPACK. Обновление: есть вероятность, что Tortoise SVN обращается к vc80.pdb', даже если файл не находится под контролем управления версиями, что также может привести к описанной выше ошибке (спасибо Лиане за сообщение об этом). Однако я не могу подтвердить это, так как я не смог воспроизвести проблему после того, как убедился, что используются разные выходные каталоги для все проекты.


переключите отладочную информацию в формат C7 вместо использования PDB.

Project Options -> C/C++ -> General -> Debug Information Format и установить его в C7.


это обычно происходит, когда ваши предыдущие попытки отладки не убили отладчик полностью. В диспетчере задач найдите процесс под названием vcjit, убейте его и повторите попытку. Худший вариант перезапуска visual studio, это должно решить вашу проблему.


У меня была эта проблема сегодня, и оказалось, что это не символы ansi в пути к pdb, который вызвал ее.

Я использую windows через vmware, и мой проект был в общем расположении: \vmware-host\Shared Folders\project

когда я переместил его в \Users\julian\project, он решил проблему.


попробуйте щелкнуть правой кнопкой мыши файл excutable VS....и свойства - >совместимость - > отметьте "запустить эту программу в режиме совместимости для:" выкл........


У меня была аналогичная проблема во время работы над проектом, который я нашел в своей папке Dropbox. Я обнаружил, что это вызовет эту ошибку, когда маленький значок "синхронизация" будет отображаться на значке Dropbox в системном трее, так как Dropbox получает доступ к файлам для загрузки их на свой сервер. Когда я ждал, пока Dropbox завершит синхронизацию, он работал каждый раз.


Я только что столкнулся с этой проблемой. Visual studio жаловалась на невозможность открыть vc100.pdb. Я искал открытые дескрипторы файлов для этого файла, используя procexp и узнал, что процесс mspdbsrv имел открытый дескриптор файла. Убийство этого процесса исправило проблему, и я смог скомпилировать.


вы вообще используете LinqToSql? Возможно, это похоже на странную ошибку, которую я буду испытывать время от времени, как я задал в этом вопросе: что заставляет Visual Studio не загружать сборку неправильно?


Я изменил свой промежуточный каталог с:

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

to

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

теперь работает. Не знаю почему.


у меня такая же проблема C1033: cannot open program database,

сценарий

у меня есть две dll файлы родитель.dll файлы и ребенок.dll файлы.Я просто привязалась к ребенку.проект dll с отладчиком visual studio в то же время я пытаюсь построить Родительский.dll проект, производит ошибку C1033: cannot open program database

решение

остановите отладку и убейте процесс, присоединенный к отладчику.Перестроить проект


это происходит со мной последовательно, если я Ctrl+перерыв отменить сборку (vs2015). Есть какой-то процесс, который не выключен должным образом. Я пошел на ярость "End Tasking" ms / vs связанных процессов (искать дубликаты), и моя сборка снова работала. Перезапуск, вероятно, тоже сработает. Как бы переходя к GNU binutils.

раздражающе unlocker tools не сообщают о каких-либо процессах блокировки файла, windows не позволяет мне удалить .pdb но я могу переименовать его. Я предполагаю, что два процесса прыгают одновременно во время сборки.