Для чего Visual Studio использует vc90.pdb? - PullRequest
2 голосов
/ 24 ноября 2010

Согласно http://msdn.microsoft.com/en-us/library/yd4f8bd1.aspx есть 2 файла .pdb для проекта.

project.pdb Я использую, чтобы разрешить загрузку мини-дампов позже, но для чего именно используется vcx0.pdb? Если он отсутствует, это не проблема, и мне не нужно ничего хранить.

Я пытаюсь поделиться PCH среди разных проектов, и этот файл - единственное, что вызывает проблемы. Если я скопирую файл vcx0.pdb, созданный с помощью PCH, во все проекты, эти проекты используют этот файл в качестве базы и добавляют к нему свои собственные символы. Если не предоставить этим проектам этот файл .pdb, они потерпят неудачу.

Я заметил пару вещей:

  • Предупреждение LNK4099, сообщающий об отсутствующем vcx0.pdb, похоже, не является чем-то критичным.
  • Если я указываю несколько проектов на один и тот же файл с помощью / Fd и отключаю параллельное построение, чтобы все работало, каждый проект продолжает увеличиваться со своими собственными символами

Ответы [ 2 ]

5 голосов
/ 24 ноября 2010

VCx0.PDB генерируется компилятором и имеет информацию о типе.Это вход для компоновщика.

Компоновщик выводит $ (TargetName) .PDB

0 голосов
/ 24 ноября 2010

То, что вы делаете, не поддерживается, я бы вернулся к файлам PCH для каждого проекта и файлам PDB. Скорее всего, вы будете тратить больше времени на размышления о том, почему это не работает, чем экономить.

Более конкретное возражение - Visual Studio 2008 предназначен для параллельного построения проектов, которые не зависят друг от друга, если у вас многоядерное / многопроцессорное оборудование. Введя подобную зависимость, вы либо предотвратите это (что противодействует любому ускорению, которое она приносит), либо полностью прервите сборку, когда два проекта попытаются одновременно получить доступ к одним и тем же файлам для записи.

...