LNK1201 Visual C ++ 2010 Большой проект не может создать PDB
Мы прошли через пункты, перечисленные наMSDN WRT к этой ошибке (кроме # 5). Три разных человека на разных машинах получают одну и ту же проблему. PDB создан, но выходит из строя где-то посередине.
Подробности:
67 статических библиотек4,27 ГБ статических библиотек1048575 байт - размер PDB при сбое компоновщикаПоследние несколько мегабайт PDB равны нулюВыпуск сборки успешен и производит PDB (у нас он включен, без отладочной информации в exe)Релиз сборки PDB составляет чуть менее 1 ГБ.Мы отключили антивирусные сканеры. Наблюдали с procmon.exe и не видели никаких подозрений во взаимодействии с PDB, когда компоновщик вышел из строя.
Связанный вопрос предлагает ограничение в 1 ГБ для PDB - кто-нибудь / способ подтвердить это?
ОБНОВЛЕНИЕ И РЕШЕНИЕ:
@ Барри и команда Chromium придумали решение.Вот является патчем для системы сборки Chromium, которая реализует разрешение
подробности
PDB использует виртуальную файловую систему внутри:MSF, Когда компоновщик создает файл PDB, по умолчанию используется размер страницы (по-видимому, не конфигурируемый) 2 КБ. Очевидно и к счастью, когда компилятор создает свою PDB, он по умолчанию имеет размер страницы 4 КБ. Этот компилятор PDB может быть поднят и использован в качестве основы для компоновщика PDB.
Лучшее решение КакСобытие до ссылки в проекте, который связывает ваш exe или dll, мы можем поднять компилятор, чтобы сгенерировать наш требуемый начальный PDB:
cl -c "dummy_empty.cpp" /Zi /Fd"$(TargetDir)$(TargetName).pdb"
Оригинальное решение
Создайте проект статической библиотеки C ++ с пустым файлом cpp, настройте «Имя файла базы данных Porgram» для вывода чего-то отличного от значения по умолчанию. Используйте некоторые события сборки проекта (я использовал 'Pre-Link Event'), чтобы скопировать в ранее созданную PDB туда, куда ожидает ваш компоновщик (см. Linker-> Generate Program Database File) для создания своей PDB. К счастью, компоновщик примет скопированное в PDB и использует размер страницы 4 КБ. Это позволит выиграть время и пространство, позволяющее разместить до 2 ГБ ПБД.